C中的Control-C和信号处理

时间:2011-03-11 06:59:49

标签: c signals

我有2个进程通过socket与发送者和接收者交谈。我想捕获信号Control-C而不是退出 - 显示一些输出.Sender和Receiver工作正常,所以我添加了信号(SIGINT,handler )发信人的遗体。 handler()只输出一些text.So当我运行它们并点击Cnt-C时 - 信号被捕获并且处理程序输出文本但退出Sender进程.Sender有一个循环监听用户输入,除非Cnt-D - 所以为什么处理程序正在让Sender退出吗?

2 个答案:

答案 0 :(得分:1)

如果您没有在处理程序内重新注册信号,那么它将恢复为默认值,并在第二次发送信号后退出。有关更详细的说明,请查看我的帖子here

答案 1 :(得分:1)

你需要陷阱/处理信号2(SIGINT)和3(我相信SIGEXIT)。请注意,您通常不希望这样做:Control-C应始终是最后的真正的退出策略。捕获它的唯一合理理由是进行清理等。