【发布时间】:2011-01-23 14:00:44
【问题描述】:
如何在不让父进程等到子进程被杀死的情况下追踪子进程的死亡?
我正在尝试一个客户端-服务器方案,其中服务器接受来自客户端的连接,并为它接受的每个连接分叉一个新进程。
我忽略了 SIGCHLD 信号以防止僵尸创建。
signal(SIGCHLD, SIG_IGN);
while(1)
{
accept();
clients++;
if(fork() ==0)
{
childfunction();
clients--;
}
else
{
}
}
上述场景的问题是,如果子进程在childfunction()函数中被杀死,全局变量clients并没有递减。
注意:我正在寻找不使用 SIGCHLD 信号的解决方案...如果可能的话
【问题讨论】:
-
你可以在 SIGCHLD 的信号处理器中做一些事情
-
我已经提到... SIGCHLD 信号被忽略.. ?
-
+1 表示非常戏剧性的标题和开头句。 D:
标签: c linux client-server