我很新的C和编程,需要一些帮助。 在Linux下C(Cygwin的),我需要在出口删除所有子进程。 我已经看过其他类似的问题,但不能让它开始工作。 我试过了-
atexit(killzombies); //in parent process
void killzombies(void)
{
printf("works");
kill(0, SIGTERM);
printf("works");
if (waitpid(-1, SIGCHLD, WNOHANG) < 0)
printf("works");
}
出于某种原因,“作品”甚至没有打印过。 我按ctrl + c退出。
我也有tried-
prctl(PR_SET_PDEATHSIG, SIGHUP); //in child process
signal(SIGHUP, killMe);
void killMe()
{
printf("works");
exit(1);
}
但因为我使用Cygwin的,当我#include <sys/prctl.h>
,cygwin的说,它无法找到文件或目录,我不知道要安装什么包吧。 另外,如果我prctl()
函数是工作,会杀死所有僵尸?
我的计划是一个客户端服务器和我的服务器叉()来处理每一个客户。 我想,当服务器关闭时没有留下任何剩余的僵尸。