我有一个学校项目,我需要一些帮助。我在 C 中工作,我有一个服务器和一个客户端。在服务器中,我使用 fork 为每个客户端创建一个新进程。我的问题是:如果我用 CTRL+C 关闭服务器,我如何杀死所有剩余的进程?谢谢
问问题
9115 次
4 回答
2
您可以在创建它们后存储它们的 pid,然后在退出时sigterm
向sigkill
它们发出信号。
你可以通过 shell 来实现——killall
这就是你在 linux 下搜索的东西。
您可以使用线程而不是进程(可以吗?项目详细信息怎么说?)并通过变量进行通信。
于 2013-01-28T08:28:12.947 回答
1
这将在 shell 中为您完成:
killall -15 <process name>
在 C 中,您可以尝试:
kill(0, SIGKILL)
在SIGINT
您的主服务器进程的信号处理程序中杀死其进程组中的所有进程,其中应包括其子进程。
于 2013-01-28T08:26:29.553 回答
0
当您单独杀死一个进程时,它不会杀死子进程。
如果您希望给定组的所有进程都接收信号,则必须将信号发送到进程组:kill -9 -parentpid
。否则,孤儿将链接到init
,
于 2013-01-28T08:47:37.483 回答