命令行程序,Ctrl+C 退不出来。。。

Jonix 2012-12-18 01:21:28
怎么让它退出来呢?

我是个服务器程序。。。
...全文
3426 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjianxinxh 2013-01-10
  • 打赏
  • 举报
回复
引用 15 楼 openXMPP 的回复:
ctrl+c 或 ctrl + z 或ctrl +D 在不同的平台下会触发不同的signal 在linux下 ctrl + c 是SIGINT 先安装一个singal处理函数 if ( SIG_ERR == signal (SIGINT,handle_Ctrl_C_signal) ) { fprintf(stderr,"inst……
++1
jdwx 2013-01-09
  • 打赏
  • 举报
回复 2
windows按CTRL+break
Jonix 2013-01-09
  • 打赏
  • 举报
回复
引用 12 楼 jinjianxinxh 的回复:
引用 11 楼 Jonix 的回复:引用 10 楼 jinjianxinxh 的回复:实现signal函数,捕获SIGINT信号,试试 有代码吗? 我是windows下,不排除需要移植到mac下 这个很简单啊 上网找找好了,这个用过,但是代码这不到了
找不到。。。
乔巴好萌 2013-01-09
  • 打赏
  • 举报
回复
第2个参数你可以理解为一个callback
乔巴好萌 2013-01-09
  • 打赏
  • 举报
回复
在main函数里安装 if ( SIG_ERR == signal (SIGINT,handle_Ctrl_C_signal) ) { fprintf(stderr,"install signal handler failed\n"); return -1; } 然后在signal函数的第2个参数里捕捉消息
Jonix 2013-01-09
  • 打赏
  • 举报
回复
我就是不知道在哪里捕消息
乔巴好萌 2013-01-09
  • 打赏
  • 举报
回复
在linux下 kill -l 可以看到信号量和数值的对应关系 kill -9 13444 就是给进程号13444的进程发送SIGKILL的命令 SIGKILL等信号量是无法被signal()函数屏蔽掉的
乔巴好萌 2013-01-09
  • 打赏
  • 举报
回复
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 进程名
jinjianxinxh 2012-12-18
  • 打赏
  • 举报
回复
引用 11 楼 Jonix 的回复:
引用 10 楼 jinjianxinxh 的回复:实现signal函数,捕获SIGINT信号,试试 有代码吗? 我是windows下,不排除需要移植到mac下
这个很简单啊 上网找找好了,这个用过,但是代码这不到了
Jonix 2012-12-18
  • 打赏
  • 举报
回复
引用 10 楼 jinjianxinxh 的回复:
实现signal函数,捕获SIGINT信号,试试
有代码吗? 我是windows下,不排除需要移植到mac下
jinjianxinxh 2012-12-18
  • 打赏
  • 举报
回复
实现signal函数,捕获SIGINT信号,试试
bestman 2012-12-18
  • 打赏
  • 举报
回复 2
Ctrl + Z
Jonix 2012-12-18
  • 打赏
  • 举报
回复
引用 7 楼 allencui0313 的回复:
引用 5 楼 allencui0313 的回复:引用 2 楼 Jonix 的回复:引用 1 楼 allencui0313 的回复:ps aux kill xxxx 你倒没让我重启机器呢,拆电池 。。。 当然是问程序中怎么捕获 Ctrl+C , 然后正常退出。 哈哈。不好意思,如果还不行,我就要说重启了。 event里面有个Modifyer... ……
这个网页是GUI界面,我是命令行方式,不一样的吧。。。
  • 打赏
  • 举报
回复
引用 5 楼 allencui0313 的回复:
引用 2 楼 Jonix 的回复:引用 1 楼 allencui0313 的回复:ps aux kill xxxx 你倒没让我重启机器呢,拆电池 。。。 当然是问程序中怎么捕获 Ctrl+C , 然后正常退出。 哈哈。不好意思,如果还不行,我就要说重启了。 event里面有个Modifyer... 来判断是不是ctrl 啊。alt这些被按下了。……
http://www.cnblogs.com/codingmylife/archive/2010/08/30/1812739.html。。这里。
SilenceSu 2012-12-18
  • 打赏
  • 举报
回复
引用 4 楼 Jonix 的回复:
不太好吧。。。
哪里不太好?
  • 打赏
  • 举报
回复
引用 2 楼 Jonix 的回复:
引用 1 楼 allencui0313 的回复:ps aux kill xxxx 你倒没让我重启机器呢,拆电池 。。。 当然是问程序中怎么捕获 Ctrl+C , 然后正常退出。
哈哈。不好意思,如果还不行,我就要说重启了。 event里面有个Modifyer... 来判断是不是ctrl 啊。alt这些被按下了。。 可以重写QApplication::Notify() .... 判断ctrl+c是否被按下。。然后做退出程序要做的事情。 http://zhidao.baidu.com/question/452172951.html
Jonix 2012-12-18
  • 打赏
  • 举报
回复
不太好吧。。。
SilenceSu 2012-12-18
  • 打赏
  • 举报
回复
那就按回车吧! 你在程序中加入 exit(0); 在编译器里面是不退出、 但是你单独运行的时候,就会直接退出!
Jonix 2012-12-18
  • 打赏
  • 举报
回复
引用 1 楼 allencui0313 的回复:
ps aux kill xxxx
你倒没让我重启机器呢,拆电池 。。。 当然是问程序中怎么捕获 Ctrl+C , 然后正常退出。
  • 打赏
  • 举报
回复
ps aux kill xxxx

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧