读取一些输入后抓住 Ctrl+D

Catch Ctrl+D after having read some input

提问人:Maifee Ul Asad 提问时间:9/13/2021 最后编辑:YunMaifee Ul Asad 更新时间:9/13/2021 访问量:392

问:

我正在尝试编写一个像 UNIX 终端一样工作的程序。因此,当按下 Ctrl+D 时,它应该退出。我正在使用以下方法读取输入:

char input[BUFFER_SIZE];
read(0, input, BUFFER_SIZE)

我还像这样存储输出:

int num_read = read(0, input, BUFFER_SIZE);
//`read` is called only once. like this ^^^

现在我这样做是为了检查:CTRL+D

if (num_read == 0)
{
    exit(CTRL_D_EXIT);
}

现在的问题是,在一些输入之后,我怎样才能抓住?就像我打字然后.然后我想发出一些警报,或者打印一行新行。我该怎么做?CTRL+DasdasdasCTRL+D

就我而言,它只是像往常一样继续执行块的其余部分(大小不是 0)。

这是对 Ctrl+D 的引用,大小为 0:https://stackoverflow.com/a/1516152/10305444

C 用户 EOF 输入缓冲器

评论

2赞 pmg 9/13/2021
Ctrl+D 注册为 ENTER 后的第一次击键。否则,您需要 2 个 Ctrl+D(请注意,缓冲区中间的 Ctrl-D 很难捕获)。EOF
2赞 pmg 9/13/2021
无关:如果您将其视为字符串 (, , ...),则需要手动添加终止:不添加它。inputstrlen()printf()'\0'read()

答: 暂无答案