命令行程序,Ctrl+C 退不出来。解决方案

命令行程序,Ctrl+C 退不出来。。。
怎么让它退出来呢?

我是个服务器程序。。。

------解决方案--------------------
ps aux
kill xxxx
------解决方案--------------------
那就按回车吧! 

你在程序中加入 exit(0);

在编译器里面是不退出、
但是你单独运行的时候,就会直接退出!
------解决方案--------------------
引用:
引用:ps aux
kill xxxx

你倒没让我重启机器呢,拆电池 。。。

当然是问程序中怎么捕获 Ctrl+C , 然后正常退出。

哈哈。不好意思,如果还不行,我就要说重启了。


event里面有个Modifyer...
来判断是不是ctrl 啊。alt这些被按下了。。

可以重写QApplication::Notify()
....
判断ctrl+c是否被按下。。然后做退出程序要做的事情。

http://zhidao.baidu.com/question/452172951.html
------解决方案--------------------
引用:
不太好吧。。。


哪里不太好?

------解决方案--------------------
引用:
引用:引用:ps aux
kill xxxx

你倒没让我重启机器呢,拆电池 。。。

当然是问程序中怎么捕获 Ctrl+C , 然后正常退出。
哈哈。不好意思,如果还不行,我就要说重启了。


event里面有个Modifyer...
来判断是不是ctrl 啊。alt这些被按下了。……



http://www.cnblogs.com/codingmylife/archive/2010/08/30/1812739.html。。这里。
------解决方案--------------------
Ctrl + Z
------解决方案--------------------
实现signal函数,捕获SIGINT信号,试试
------解决方案--------------------
引用:
引用:实现signal函数,捕获SIGINT信号,试试

有代码吗?
我是windows下,不排除需要移植到mac下

这个很简单啊 上网找找好了,这个用过,但是代码这不到了 
------解决方案--------------------
windows按CTRL+break
------解决方案--------------------
ctrl+c 或 ctrl + z 或ctrl +D 在不同的平台下会触发不同的signal 
在linux下 ctrl + c 是SIGINT
先安装一个singal处理函数
    if ( SIG_ERR == signal (SIGINT,handle_Ctrl_C_signal) )
    {
        fprintf(stderr,"install signal handler failed\n");
        return -1;
    }

实现
void handle_Ctrl_C_signal(int signal)
{
    fprintf(stderr,"handle_Ctrl_C_signal signal %d recevied \n",signal);
}

如果进程无法退出 你可以看根据进程ID杀死进程或直接pkill -9 进程名