或者说,怎么知道stdout是否被重定向?
不管怎样,谢谢各位~
可以用fstat函数根据文件描述符来查看文件信息,然后判断是否重定向(查看inode number是否相同)。
示例程序在这里
#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; }