0

我有以下问题。我想在 Linux 终端中执行某些操作,直到调用组合键 CTRL+D。我找到了一个适用于 Windows 的 C++ 库函数可以做到这一点,但对于 Linux 来说没有简单的解决方案。代码骨架将是这样的:

while(!invoked){ //Until CTRL+D is pressed
//Do something
}
//Continue when CTRL+D is invoked

这可能吗?

4

3 回答 3

2

这会在插入组合“CRTL + D”时中断循环:

while ((c = getchar()) != EOF)

Linux 中的 NoteCRTL-D代表 EOF。它相当于CTRL-Z在windows中。

于 2013-08-05T09:36:34.137 回答
1

最简单的等待方法Ctrl+D是从流中读取std::cin,然后EOF在流中检查。问题是:这个调用会阻塞。所以这样做应该发生在其他一些线程中。然后,您必须从服务员向该工作线程发出信号(例如通过条件变量)...

于 2013-08-05T09:38:12.533 回答
0

使用(n)curses 库中的getch。正如 zaufi 已经解释的那样,EOF从标准输入读取时检查,例如getchar,就像检查Ctrl-D,但它是一个阻塞操作。getch是非阻塞的(在nodelay模式下),因此更适合诸如游戏之类的东西。

于 2013-08-05T09:36:55.357 回答