c - 如何捕获 Control+D 信号?

我想在我的程序中捕获 Ctrl+D 信号并为其编写信号处理程序。 我怎样才能做到这一点? 我正在开发 C 并使用 Linux 系统。

最佳答案

正如其他人已经说过的,要处理 Control+D,请处理“文件结尾”。

Control+D 是用户与伪文件之间的一条通信,您将其视为标准输入。这并不意味着具体的“文件结尾”,而是更一般地说“刷新我到目前为止输入的输入”。刷新意味着程序中对标准输入的任何 read() 调用都会返回自上次刷新以来键入的输入的长度。如果该行不为空,则输入对您的程序可用,尽管用户尚未键入“return”。如果该行为空,则 read() 返回零,这被解释为“文件结尾”。

所以当使用Control+D结束一个程序时,它只在一行的开头起作用,或者如果你做了两次(第一次刷新, read() 第二次返回零)。

试试看:

$ cat
foo
   (type Control-D once)
foofoo (read has returned "foo")
   (type Control-D again)
$

https://stackoverflow.com/questions/1516122/

相关文章:

linux - 是否有将随机垃圾字节写入文件的命令?

linux - Crontab 每 15 分钟运行一次,除了凌晨 3 点?

python - 我什么时候应该使用 ugettext_lazy?

linux - 未生成核心转储文件

linux - 如何给 Linux 用户 sudo 访问权限?

python - 如何在当前模块上调用 setattr()?

python - 如何在 Anaconda (Conda) 环境中跟踪 pip 安装的软件包?

linux - 监听网络端口并将数据保存到文本文件

python - 为什么 PyCharm 建议将方法更改为静态?

python - 排除 os.walk 中的目录