开发者社区 问答 正文

linux下怎么做到当printf不是输出到屏幕时,就不执行printf?

或者说,怎么知道stdout是否被重定向?
不管怎样,谢谢各位~

展开
收起
a123456678 2016-06-16 16:36:15 2126 分享 版权
1 条回答
写回答
取消 提交回答
  • #include <sys/stat.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        struct stat st;
        fstat(STDOUT_FILENO, &st);
        if(S_ISCHR(st.st_mode))
            fprintf(stderr, "terminal\n");
        else if(S_ISREG(st.st_mode))
            fprintf(stderr, "regular file\n");
        else
        {
            //what ever
        }
    
        return 0;
    }
    2019-07-17 19:41:18
    赞同 展开评论
问答分类:
问答地址: