在一个应用中,注册了信号的处理函数,并添加了相应的处理。主程序中,同时也调用了msgrcv接口(工作在阻塞状态下)。程序运行在前台,当按下ctrl+c的时信号处理函数并没有收到该信号,而是msgrcv收到信号中断退出了。这样的话,信号处理函数就没有什么作用了。针对这个问题,大家如何看,又如何处理?
2 回答
Helenr
TA贡献1780条经验 获得超3个赞
ctrl+c发送信号我个人认为,信号处理方式应该不是按照正常的消息处理的,应该属于软中断的方式。如果单纯的想处理ctrl+c的消息的话,使用signal函数就是了,而且根据该还是的调用方式,将处理函数与信号绑定,以回调的方式进行调用,那么信号的产生方式大概就是软中断。所以使用阻塞态也不一定可以捕获到。
添加回答
举报
0/150
提交
取消