C - 如何检查用户是否已将文本文件发送到标准输入

标签 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/

相关文章:

c - 多线程中某些内容的延迟失效

c - C 中的结构,具有结构的函数

c - 理解指针

c - 混淆基于 C 的二进制文件以避免反编译

linux - 使用 grep 显示硬盘设备的名称

php - MySQL:是否可以在单行中给出mysql用户名和密码?

linux - 使用来自终端的别名创建一个 git repo

c - 打印到 C 中的文件

python - 如何在Python中同时读取和写入文本文件?

java - 如何使用java调整文本文件中的行号?