c - 检查没有任何东西通过管道输送到标准输入

时间:2011-02-11 19:07:26

标签: c stdin pipe

基本上我正在尝试检查程序被调用时是否有任何东西在stdin中,所以如果我有另一个名为output的文件写入stdout然后 ./output | ./program应该有效,./program应该退出并显示错误

2 个答案:

答案 0 :(得分:6)

在POSIX中,您可以使用isatty

答案 1 :(得分:2)

isatty检查tty,管道。请改用fstat(STDIN_FILENO, &sb)并检查S_ISFIFO(sb.st_mode)

要检查是否存在您可能阅读的“in”stdin内的任何内容,例如poll(2)使用事件掩码为POLLIN