免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xzh2000
打印 上一主题 下一主题

LINUX下C代码死循环中,如何接受键盘消息?[已经解决,谢谢大家] [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-08-19 14:27 |只看该作者
原帖由 qliu00 于 2008-8-19 14:23 发表
ctrl-z
,停止它算了



ctrl+z停不掉.

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
12 [报告]
发表于 2008-08-19 14:45 |只看该作者
原帖由 xzh2000 于 2008-8-19 14:27 发表


我这是个监控程序,时间上并没有限制,有时长时间不退出,有时短时间要退出,头痛...


那就使用信号把,这个应该可以把

论坛徽章:
0
13 [报告]
发表于 2008-08-19 15:06 |只看该作者
原帖由 Godbach 于 2008-8-19 14:45 发表


那就使用信号把,这个应该可以把


怎么捕获信号?

论坛徽章:
0
14 [报告]
发表于 2008-08-19 15:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
15 [报告]
发表于 2008-08-19 15:51 |只看该作者
原帖由 xzh2000 于 2008-8-19 13:51 发表


ctrl-c退不出去啊,否则就不发这个贴子了...



不可能不能响应键盘,因为你的只是一个应用程序,而中断是内核来处理的,除非你在应用程序中屏蔽中断,但这是不可能的,因为特权级不够。否则,你想,也太容易写一个病毒程序了吧。

论坛徽章:
0
16 [报告]
发表于 2008-08-19 15:55 |只看该作者
ctrl-d

论坛徽章:
0
17 [报告]
发表于 2008-08-19 16:14 |只看该作者
不能kill这个进程的么

论坛徽章:
0
18 [报告]
发表于 2008-08-19 16:35 |只看该作者
只有两个信号是应用程序无法屏蔽的:SIGKILL 和 SIGSTOP。 没有特别设置的话 C-z 就是给进程发 SIGSTOP。 所以如果这个都无法让程序停下了,别的signal肯定也不行。 (对了,lz 试试 kill -s STOP pid)



LZ的问题我以前在solaris也遇到过(不过今天在linux上没这问题),好像是循环里面加个系统调用就行了。(以下纯属猜测:感觉是因为没有系统调用导致系统没机会把信号deliver给进程,因而没办法中断进程。但问题是,即使没有系统调用,也可以在进程切换的时候deliver信号啊。请懂的人指点迷津。)

回到lz的应用,不知道lz在死循环里做些什么操作。在里面完全可以加个sleep啊,它可以被signal中断的,不影响退出。

[ 本帖最后由 lgfang 于 2008-8-19 16:43 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2008-08-19 16:50 |只看该作者
不能用Ctrl+C可能是你的Shell不支持作业管理

论坛徽章:
0
20 [报告]
发表于 2008-08-19 16:54 |只看该作者
原帖由 yangzhifu12345 于 2008-8-19 15:13 发表
signal()
如果希望有更高的要求就的用sigporcmask() or sigsetops()


谢谢,用signal就可以了...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP