如何使用 Ctrl-D 终止程序?

Posted

技术标签:

【中文标题】如何使用 Ctrl-D 终止程序?【英文标题】:How to terminate a program with Ctrl-D? 【发布时间】:2010-12-30 14:58:52 【问题描述】:

我正在尝试编写一个模拟计算器的简单程序。我希望程序在 Ctrl+D 击键时退出或关闭。我通过***搜索并看到了 Ctrl+CCtrl+A 的其他示例,但示例在java中和 C.

对于 C:

(scanf("%lf", &var);

对于 java,当按下 Ctrl+Z 时会引发 SIGINT

signal(SIGINT,leave);  
    for(;;) getchar();

我想知道在 C++ 中我可以为 Ctrl+D 做什么...

谢谢大家!

【问题讨论】:

真的需要更多关于这方面的信息,比如你在什么环境下运行。各种 shell 和 GUI 小部件会为自己的目的拦截像这样的特殊控制字符,并且可能有也可能没有办法将其关闭。 【参考方案1】:

Ctrl+D 将导致标准输入文件描述符返回文件结束符。任何输入读取功能都会反映这一点,然后您可以在到达文件结尾时退出程序。顺便说一句,C 示例应该在 C++ 中逐字运行,尽管它可能不是最惯用的 C++。

顺便问一下,这是作业吗?如果是这样,请务必将其标记为这样。

【讨论】:

哦,这很有趣!我会尝试一下。谢谢!这是实验室的一部分,我只是无法让 Ctrl-D 工作,我很沮丧。当事情看起来束手无策时,我决定请教无所不知的精彩 ***。谢谢威尔! 不告诉如何在 c++ 中执行 OP 要求的操作。【参考方案2】:

如果您需要在读取输入时使用 Ctrl-D 终止。

 while ( std::cin ) // Ctrl-D will terminate the loop

  ...

【讨论】:

【参考方案3】:

您可以让生活更轻松,并扫描“退出”或“退出”等关键字。上次我用计算器时,键盘上没有这些字。

许多简单的计算器程序将输入读取为由换行符终止的文本。他们解析内存中的文本,然后吐出答案。

其他更复杂的计算器程序使用窗口并且是事件驱动的。有些人使用“=”之类的按钮来表示输入结束和计算开始(不适用于 RPN 计算器)。

这些技术消除了使用控制字符序列确定文本结尾输入的麻烦,并且更便于移植。

【讨论】:

【参考方案4】:

在 Unix 下,终端会将 Ctrl+D(在空行上)解释为输入的结尾;从stdin 进一步读取将返回EOF,您可以关注。

【讨论】:

记住前两个词:Under Unix。还有其他平台可能(并且可能)在触发输入结束方面有所不同。【参考方案5】:

Ctrl+D 在 Unixy 平台上是 EOF。如果你得到每个字符,你可以检查你是否有 EOF。

【讨论】:

以上是关于如何使用 Ctrl-D 终止程序?的主要内容,如果未能解决你的问题,请参考以下文章

C中的信号处理

在Python 3中将Ctrl-D与sys.stdin.readlines()结合使用后,如何避免input()出现EOFError?

终止 Shell 命令

如何在 Windows 上的 Git Bash 终端下向 EOF 发出信号以关闭标准输入? Ctrl-D 不起作用

如何在 Rails 应用程序中使用用户密码验证帐户终止?

如果前台应用程序终止,如何通知后台任务?