gpt4 book ai didi

c - 如何在不使用 fork 轰炸 C/unix 的情况下使用 exec 运行无限循环?

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:25 24 4
gpt4 key购买 nike

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);
}
}

我认为上面会 fork 炸弹。基本上我希望它连续打印出“hello world”到 stdout 而不是 fork 轰炸但仍然使用 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);
}

您仍在不断循环,但在前一个子进程完成之前不会启动新的子进程。

关于c - 如何在不使用 fork 轰炸 C/unix 的情况下使用 exec 运行无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49390481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com