c - 检查何时没有任何内容通过管道传输到 stdin
基本上,我试图在调用程序时检查 stdin 中是否有任何内容,因此如果我有另一个名为 output 的文件写入 stdout 那么 <代码>./输出| ./program 应该可以工作,并且 ./program
应该退出并出现错误
Basically I'm trying to check if anything is in stdin when the program is called, so if I've got another file called output that writes to stdout then./output | ./program
should work and ./program
should exit with an error
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 POSIX 中,您可以使用
isatty
。In POSIX, you can use
isatty
.isatty
检查 tty,而不 管道。请改用fstat(STDIN_FILENO, &sb)
并检查S_ISFIFO(sb.st_mode)
。要检查标准输入“中”是否有任何您可以读取的内容,可以使用
poll(2)
以及事件掩码POLLIN
。isatty
checks for a tty, not a pipe. Usefstat(STDIN_FILENO, &sb)
instead and check forS_ISFIFO(sb.st_mode)
.To check whether there is anything "in" stdin that you could possibly read, you use, for example
poll(2)
with an event mask ofPOLLIN
.