gpt4 book ai didi

c - 我应该用 exit() 终止一个 fork 的子进程吗?

转载 作者:太空狗 更新时间:2023-10-29 16:12:41 24 4
gpt4 key购买 nike

我正在使用 C 中的 fork() 做一些事情。这是我第一次接触到 fork 进程的概念。

基本上,我有这样的东西:

int pid;

pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork Failed");
exit(-1);
} else if (pid == 0) {
fprintf(stderr, "Inside child %d\n", getpid());
// do some other stuff
exit(0);
} else {
fprintf(stderr, "Inside parent %d\n", getpid());
}

之前,我没有将 exit(0) 放在子进程的代码中。我似乎得到了大量重复的过程。我添加了 exit(0),现在我只生成了一个 child 。但是,我想知道这是正确的做法还是只是创可贴。这是正确的做法吗? child 完成后应该如何“停止”?

最佳答案

通常子进程要么拥有自己的带有exit 的代码,要么调用其中一个exec 函数来用另一个程序替换其进程的镜像。所以导出没问题。但是 parent 和 child 至少可以执行一些相同的代码,像这样:

int pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork Failed");
exit(-1);
} else if (pid == 0) {
// child code
} else {
// parent code
}
// shared code

关于c - 我应该用 exit() 终止一个 fork 的子进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21494672/

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