请考虑以下代码段:
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
Run Code Online (Sandbox Code Playgroud)
如果execvp返回,我该如何退出子进程?我应该使用exit()或_exit()吗?
Var*_*der 49
你一定要用_Exit(). exit()调用您添加的函数atexit()并删除使用的文件tmpfile().由于父进程实际上是在存在时希望完成这些操作的进程,因此您应该调用_Exit(),而不执行这些操作.
_Exit()使用大写字母E的 通知_exit(2)可能不是您想要直接调用的. exit(3)并_Exit(3)会为你打电话.如果你没有_Exit(3),那么是的,_exit()就是你想要的.
| 归档时间: |
|
| 查看次数: |
53463 次 |
| 最近记录: |