国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

下面的源碼中搬掉僵尸

2019-11-17 05:15:30
字體:
供稿:網(wǎng)友

  #include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
extern int errno;

main()
{
char c, string[100];
FILE * fp;
int k, s, childpid;
");

while((c = getchar()) == ' ');

for(;;)
{
if((childpid = vfork()) < 0)
perror("childpid");
else if(childpid ==0 )
{
childpid=getpid();

printf("child %d in active!
", childpid);
while((c = getchar()) != '
')
putchar(c);

printf("
the child %d must quit!

", childpid);
_exit(0);
}
}
}

增加
else if (childpid > 0)
{
sigignore (SIGCHLD);
}

僵尸出現(xiàn)的原因是子進(jìn)程默認(rèn)將資源歸還給副進(jìn)程,但是你的父進(jìn)程先子進(jìn)程而亡,造成子進(jìn)程變成"孤兒",結(jié)束后變成"僵尸"
忽略SIG CHILD信號是將子進(jìn)程的控制權(quán)交給自己的父進(jìn)程(一般就是你的login shell)這樣就不會出現(xiàn)僵尸了




我不知道樓上的用法,但是我估計(jì)會有問題,我認(rèn)為正確的處理方法是在vfork之前加上信號處理機(jī)制,如:signal(SIG_CHLD, SIG_IGN);這條語句的意思是,忽略子進(jìn)程退出而產(chǎn)生的SIG_CHLD信號,交給超級服務(wù)器去處理!



zhongjl:
在vfork前加上信號處理函數(shù):
signal(SIG_CHLD, Proc_CHLD);

void Proc_CHLD(int SIGNO)
{
int pid = -1;
int stat;
while(pid=waitpid(0, &stat, WHNONG);
}



我同意zhongjl 使用的程序,因?yàn)槲业某绦蛞郧耙彩怯泻芏嗨肋M(jìn)程,后來使用上面的代碼后,就沒了

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泾源县| 连州市| 安达市| 信阳市| 闵行区| 新兴县| 乌拉特后旗| 溧阳市| 大安市| 县级市| 呼和浩特市| 阜阳市| 林芝县| 西城区| 托克托县| 大埔区| 哈巴河县| 太仆寺旗| 奈曼旗| 白河县| 景洪市| 曲松县| 永善县| 奉新县| 揭阳市| 和政县| 通山县| 双江| 霍山县| 开阳县| 宜兴市| 成武县| 石屏县| 罗田县| 龙门县| 阳朔县| 麻阳| 金昌市| 宝应县| 台北县| 伊川县|