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

发布于 2022-08-25 01:24:33 字数 62 浏览 18 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心意如水 2022-09-01 01:24:33
#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;
}
霊感 2022-09-01 01:24:33

可以用fstat函数根据文件描述符来查看文件信息,然后判断是否重定向(查看inode number是否相同)。

示例程序在这里

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文