如何使用 Ctrl-D 终止程序?
Posted
技术标签:
【中文标题】如何使用 Ctrl-D 终止程序?【英文标题】:How to terminate a program with Ctrl-D? 【发布时间】:2010-12-30 14:58:52 【问题描述】:我正在尝试编写一个模拟计算器的简单程序。我希望程序在 Ctrl+D 击键时退出或关闭。我通过***搜索并看到了 Ctrl+C 或 Ctrl+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 终止程序?的主要内容,如果未能解决你的问题,请参考以下文章
在Python 3中将Ctrl-D与sys.stdin.readlines()结合使用后,如何避免input()出现EOFError?