char *args = "echo hello world";
while(1) {
pid_t pid = fork()
if(pid == 0) {
execlp('sh', 'sh', '-c', args, (char *)NULL);
perror("sh");
return(1);
} else if(pid == -1) {
perror("fork");
return(1);
}
}
我认为上面会叉炸弹。基本上我希望它连续打印出"hello world"到stdout,而没有它的叉子轰炸,但仍然是usi ng fork。有办法吗?基本上是监视一个进程终止然后启动一个新进程。
父进程可以通过调用 wait
暂停,直到子进程完成:
char *args = "echo hello world";
while(1) {
pid_t pid = fork()
if(pid == 0) {
execlp('sh', 'sh', '-c', args, (char *)NULL);
perror("sh");
return(1);
} else if(pid == -1) {
perror("fork");
return(1);
}
// wait for the child to finish
wait(NULL);
}
您仍在连续循环,但在前一个子进程完成之前,您不会启动新的子进程。