【问题标题】:How to interrupt a C++ program如何中断 C++ 程序
【发布时间】:2012-10-20 17:52:04
【问题描述】:

这是程序的要点:

while(true)
{
//bunch of codes that gets data from port ,
//if there is no data it waits here .

}

我正在使用 linux ,是否有对 Ctrl+C 等按键的内置支持。我可以使用signal(SIGINT, signal_callback_handler); 捕捉到这一点,但是 Ctrl+C 有一些问题,因为它会给出错误。

我想在按键时退出这个循环,这可能吗? 如果是,该怎么做。

【问题讨论】:

  • break 让你摆脱困境。要获得密钥,您可能需要一个线程。
  • 哪个操作系统?在 Windows 上,使用 GetAsyncKeyState 检查特定键就足够了。
  • "如果这里没有数据等待"我想你的意思是 spins 在这里,除非你的端口读取被阻塞。
  • 它被阻塞了,它停在那里。
  • 在 Linux 上,您可以使用 NCurses。这已经回答了:stackoverflow.com/a/4028974/856199

标签: c++


【解决方案1】:

您可以发出中断信号

      #include <csignal>

      raise(SIGINT);

     raise(SIGABRT);

【讨论】:

【解决方案2】:
while(!_kbhit()){
    // do stuff here.
}

适用于 Windows。

【讨论】:

    【解决方案3】:

    可以终止你的程序的函数是exit()

    要输入 cicle 的提前终止,您可以使用 break

    如果您愿意使用一些面向 C 的解决方案,我建议您查看 this question

    对于与 linux 严格相关的内容,您可能应该参考ncurses library in combination with the exit function

    也不要假设特定的组合键等于终止,许多终端不是真正的终端而是模拟器,而且许多模拟器是由操作系统创建者和用户自定义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2019-03-21
      • 1970-01-01
      相关资源
      最近更新 更多