我想在我的程序中捕获 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)
$
关于c - 如何捕获 Control+D 信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516122/