不能杀死孩子的过程

时间:2015-03-06 21:19:06

标签: c fork kill

因此,我将父进程的代码放在与子进程代码不同的文件中。我必须用父母的代码杀死孩子,但它永远不会被杀死。这是我到目前为止所得到的:

#define NO_OF_CHILDREN 3

int rtn = 1; 
for( count = 0; count < NO_OF_CHILDREN; count++ ) {

    if( rtn != 0 ) {
        rtn = fork(); 
        pid[count] = rtn;
    }   
     else {
        break;
    }
}

numKids = count;
sprintf(numeroFilhos,"%d",numKids);  

if( rtn == 0 ) {        
    execl("filho",numeroFilhos,NULL); 
}

else
{

for(i=0; i < numKids; i++)
{   
   usleep(2000000);   
   matar = kill(pidDosFilhos[i],SIGKILL);   
} 

printf("are the children dead? %d \n",matar);

} 
    exit(0);

我一直在&#34; -1&#34;为了回归杀人......任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

在你杀死他们之前,孩子们可能已经死了。添加暂停();在execl之后,这将使孩子们挂起,直到他们收到任何信号。当你杀死它们时,如果另一个进程发送了一个信号并且取消了其中一个孩子

,你仍然可以得到-1