2009-09-11 100 views
2

是否可以编写一个在XFCE终端中工作的C程序,直到用户点击Esc键?如果是,如何?Linux控制台键盘处理程序

+0

用户点击Esc键后,你想要发生什么? – Glen 2009-09-11 12:41:46

+0

我打算编写一个程序,计算一个特定问题的最佳解决方案。它应该输出它迄今为止发现的最佳解决方案。我不知道任何问题的好算法,所以我需要找到满足问题的随机数。由于这可能需要几个月的时间,因此只要我想停止计算,就可以中断计算。 – Jaska 2009-09-13 20:02:53

回答

1

我建议你看看ncurses,通常用于实现那种在终端/主机应用键盘读的API。应该不需要以平台相关的方式来做到这一点。

1

最简单的解决方案是按下Ctrl-C在终端窗口。您的应用程序将立即停止,或者您可以使用SIGINT信号处理程序处理事件。

#include <unistd.h> 
#include <stdio.h> 
#include <signal.h> 

volatile int exit_loop; 

void sig_hnd(void){ exit_loop=1; } 

int main(void){ 
    signal(SIGINT, (void (*)(int))sig_hnd); 

    for(exit_loop=0; !exit_loop;){ 
    puts("do some work"); 
    sleep(1); 
    } 

    puts("\nend of work\n"); 
} 
1

我想你问的是错误的问题。为什么您要使用交互式终端进行长时间运行?为什么不作为守护进程运行并定期记录“最佳”解决方案?该终端是供人类交互使用的。有更好的方法来处理必须运行数月的软件。

相关问题