【问题标题】:Is it possible to exit a C console application without threads at any time by pressing a key? [duplicate]是否可以通过按键随时退出没有线程的 C 控制台应用程序? [复制]
【发布时间】:2014-02-05 15:24:29
【问题描述】:

假设我在 while (1) 循环中计算某些东西,是否可以通过按某个键退出整个应用程序?

这是一个没有线程的 C 控制台应用程序。

我很确定这是不可能的,但我是新手,所以嘿。我只能想象通过_getch() 或类似的功能强制按下一个键。但是你必须等到用户按下键并且计算不能同时运行。

【问题讨论】:

  • 在 C 中,一切皆有可能;P.
  • 所有标签都是错误的 - 但是 - 可能会这样做(运行 linux)
  • 谢谢你的链接,我很抱歉再次提出这个问题,但我发布的时候没有建议。
  • @defoe 没关系。有时可能很难找到正确的搜索词。
  • 使用事件循环设置您的程序,然后使用非阻塞输入(以及一般的非阻塞调用)。这样就不需要操作系统线程了

标签: c cmd command-line-interface exit


【解决方案1】:

在 Windows 系统上,kbhit() 函数是非阻塞的,并在按下任意键时返回 true。因此,您可以将while(1) 更改为while(!kbhit()),或者您可以if(kbhit()) c = getch() 无需等待即可读取字符。但这是非常粗略的解决方案,真的..

【讨论】:

    【解决方案2】:

    您可以通过使用 C“信号”来做到这一点。

    这并不难使用。看看这个维基百科页面。 ;)

    http://en.wikipedia.org/wiki/C_signal_handling

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多