gpt4 book ai didi

c - 如何退出子进程 - _exit() 与 exit

转载 作者:太空狗 更新时间:2023-10-29 16:19:47 26 4
gpt4 key购买 nike

考虑这个代码片段:

pid_t cpid = fork();

if (cpid == -1) {
perror("fork");
exit(EXIT_FAILURE);
}

if (cpid == 0) { // in child
execvp(argv[1], argv + 1);
perror("execvp");
_exit(EXIT_FAILURE);
}

// in parent

如果execvp返回,我该如何退出子进程?我应该使用 exit() 还是 _exit()?

最佳答案

您绝对应该使用 _Exit()exit() 调用您使用 atexit() 添加的函数并删除使用 tmpfile() 创建的文件。由于父进程在存在时确实希望完成这些操作,因此您应该调用 _Exit(),它不会执行任何这些操作。

请注意带有大写字母 E 的 _Exit()_exit(2) 可能不是您想直接调用的。 exit(3)_Exit(3) 将为您调用它。如果您没有 _Exit(3),那么是的,_exit() 就是您想要的。

关于c - 如何退出子进程 - _exit() 与 exit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2329640/

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