读书人

父进程和子进程通信的有关问题

发布时间: 2013-03-27 11:22:41 作者: rapoo

父进程和子进程通信的问题
#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/types.h>

#include <signal.h>

void print(int sig)

{

printf("%d\n", getpid());

}

int main(void)

{

static int count = 0;

pid_t pid;

int i;

for(i=0; i<5; i++)

{

pid = fork();

if(pid == 0 || pid == -1)

break;

}



if(pid == -1)

{

printf("fork fail\n");

exit(1);

}

else if(pid == 0)

{

signal(SIGCHLD, print);

pause();

exit(0);

}

else

{

sleep(1);

kill(pid, SIGCHLD);

exit(0);

}

return 0;

}

需要停止5个子进程,到最后怎样只有一个被停止了? signal linux
[解决办法]
父进程 在fork前四个进程后并没有往下执行,,, 只有当fork最后一个进程后,for结束,才用得到的pid kill了最后的那个子进程。
[解决办法]
如果你想要达到你要的效果 ,可以把后面的逻辑全放在for里面。for(i=0; i<5; i++)
for (i = 0; i < 5; i++)
{
pid = fork();
if(pid == -1)
{
printf("fork fail\n");
exit(1);
}
else if(pid == 0)
{
signal(SIGCHLD, print);
pause();
exit(0);
}
else
{
sleep(1);
kill(pid, SIGCHLD);
}
}

读书人网 >UNIXLINUX

热点推荐