Linux控制台键盘处理程序

时间:2009-09-11 12:04:48

标签: c linux console keyboard

是否有可能编写一个在XFCE终端中工作的C程序,直到用户点击Esc键为止?如果是,怎么样?

4 个答案:

答案 0 :(得分:1)

我建议你研究ncurses,这是一种API,通常用于在终端/控制台应用程序中实现这种键盘读取。不应该以平台相关的方式执行此操作。

答案 1 :(得分: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" );
}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

将终端切换到non-canonical mode