因此,我将父进程的代码放在与子进程代码不同的文件中。我必须用父母的代码杀死孩子,但它永远不会被杀死。这是我到目前为止所得到的:
#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;为了回归杀人......任何人都可以帮助我吗?
答案 0 :(得分:0)
在你杀死他们之前,孩子们可能已经死了。添加暂停();在execl之后,这将使孩子们挂起,直到他们收到任何信号。当你杀死它们时,如果另一个进程发送了一个信号并且取消了其中一个孩子
,你仍然可以得到-1