mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Use _exit rather than exit in the child process after a failed exec.
Add a comment explaining why. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78128 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0a962314fb
commit
339685269f
@ -200,9 +200,13 @@ Program::Execute(const Path& path,
|
||||
execve(path.c_str(), (char**)args, (char**)envp);
|
||||
else
|
||||
execv(path.c_str(), (char**)args);
|
||||
// If the execve() failed, we should exit and let the parent pick up
|
||||
// our non-zero exit status.
|
||||
exit(errno == ENOENT ? 127 : 126);
|
||||
// If the execve() failed, we should exit. Follow Unix protocol and
|
||||
// return 127 if the executable was not found, and 126 otherwise.
|
||||
// Use _exit rather than exit so that atexit functions and static
|
||||
// object destructors cloned from the parent process aren't
|
||||
// redundantly run, and so that any data buffered in stdio buffers
|
||||
// cloned from the parent aren't redundantly written out.
|
||||
_exit(errno == ENOENT ? 127 : 126);
|
||||
}
|
||||
|
||||
// Parent process: Break out of the switch to do our processing.
|
||||
|
Loading…
Reference in New Issue
Block a user