基本上我正在尝试检查程序被调用时是否有任何东西在stdin中,所以如果我有另一个名为output的文件写入stdout然后
./output | ./program
应该有效,./program
应该退出并显示错误
答案 0 :(得分:6)
在POSIX中,您可以使用isatty
。
答案 1 :(得分:2)
isatty
检查tty,不管道。请改用fstat(STDIN_FILENO, &sb)
并检查S_ISFIFO(sb.st_mode)
。
要检查是否存在您可能阅读的“in”stdin内的任何内容,例如poll(2)
使用事件掩码为POLLIN
。