我對c和編程非常陌生,需要一些幫助。在linux上(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()
函數可以工作,那會殺死所有的殭屍嗎?
我的程序是一個客戶端服務器和我的服務器forks()來處理每個客戶端。我想在服務器關閉時不會留下殭屍。
一個鏈接,你可以看到http://www.faqs.org/faqs/unix-faq/faq/part3/section-13.html。特別是最後的解決方案這對你有用嗎? –