【发布时间】:2011-12-19 19:18:11
【问题描述】:
我的程序中有一个主进程,它 fork() 一些子进程,然后进入无限循环(此外,子进程是无限的)。现在,我想杀死所有进程,关闭套接字,取消附加共享内存,并在使用 Ctrl+C 或 终止程序时清理所有类似的东西Ctrl+Z。我在互联网上搜索,发现可以通过发送一些信号(如 SIGSTOP 和 SIGINT)来做到这一点,但我不知道该怎么做。那么,我该如何在我的程序中完成呢?
【问题讨论】:
-
^Z 一般不会终止程序,只是暂停它,以便稍后继续。
-
我想你已经大致得到了答案。有关向其他进程发送信号的系统调用,请参见 kill(2) 手册页:linux.die.net/man/2/kill 此外,您还需要阅读信号处理程序、引用的 sigaction 手册页,或者我强烈建议使用 libev,一种状态机器,在收到信号时调度代码。它可以保护您免于犯错。