<分区>
我目前正在做我的学校项目,想知道是否有任何方法可以判断用户是否写了 <textfile.txt
到终端。
像这样:./project <textfile.txt
我的项目将文本文件中的所有行读取到 stdin
通过 scanf
和他们一起工作。但是当我不使用 <textfile.txt
时“东西”,它在没有数据的情况下开始。相反,我希望它写一个错误并停止程序。
非常感谢。
标签 c terminal text-files stdin
<分区>
我目前正在做我的学校项目,想知道是否有任何方法可以判断用户是否写了 <textfile.txt
到终端。
像这样:./project <textfile.txt
我的项目将文本文件中的所有行读取到 stdin
通过 scanf
和他们一起工作。但是当我不使用 <textfile.txt
时“东西”,它在没有数据的情况下开始。相反,我希望它写一个错误并停止程序。
非常感谢。
最佳答案
您可能会使用 isatty(3)检测您的标准输入是否是终端。
你可以使用 fstat(2)在 STDIN_FILENO
上,例如检测重定向或 pipelines .
或者(在 Linux 上)readlink(2) /proc/self/fd/0
,参见 proc(5)
我建议接受一些程序参数来覆盖这种自动检测。阅读this .
注意重定向和通配是由 shell 完成的,参见 this .
关于C - 如何检查用户是否已将文本文件发送到标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46866580/