gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:02:17 25 4
gpt4 key购买 nike

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

最佳答案

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

Control+D 是用户和您视为标准输入的伪文件之间的一种通信。它并不具体意味着“文件结束”,而是更一般地意味着“刷新我到目前为止输入的输入”。刷新意味着程序中对 stdin 的任何 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/36614845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com