【发布时间】:2013-08-05 09:33:54
【问题描述】:
我有以下问题。我想在 Linux 终端中执行某些操作,直到调用组合键 CTRL+D。我找到了一个适用于 Windows 的 C++ 库函数可以做到这一点,但对于 Linux 来说没有简单的解决方案。代码骨架将是这样的:
while(!invoked){ //Until CTRL+D is pressed
//Do something
}
//Continue when CTRL+D is invoked
这可能吗?
【问题讨论】:
-
我不确定 CTRL+D 是否会产生信号.. ?
-
失败,它是 EOF。我的错。
-
您是在谈论“在按下 CTRL-D 之前读取一些输入”,还是“画图和播放音乐”类型的“做某事”。对于 Giueseppe Pes 解决方案是否正确,或者我们应该走其他路线,区别非常重要。
-
输入内容直到按下 CTRL-D,它并不比这更复杂 =)
-
@Nbr44 是否产生信号取决于最后一个
stty。在Linux下,他总是可以调用tcsetattr让control D产生一个信号。 (更好的解决方案是在两个平台上都使用curses,而不必自己担心系统依赖。)