aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Stoeckmann <tobias@stoeckmann.org>2025-01-13 17:40:43 +0100
committerAlejandro Colomar <alx@kernel.org>2025-01-14 01:02:19 +0100
commit476bf6d993c13edf8a80c4e874a1d4bf6ff7eb45 (patch)
treec5f4c3b77b64ee2d078f3f65341e952bdc972dad
parent850f46e7df4f096dd073bafbad9eba219707dda5 (diff)
downloadman-pages-476bf6d993c13edf8a80c4e874a1d4bf6ff7eb45.tar.gz
man/man2/fork.2: Add _exit(2) to example
The _exit(2) function is a better choice for exiting a child in many cases. Most prominently it avoids calls of functions registered with atexit(3) by the parent. There are valid reasons to call exit(3) and the example is actually one of them: flush FILE-based output. Since atexit(3) is never called, we could just stay with exit(3). Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Message-ID: <tngwcffbrzbfkj6vrxgxpekrp3bzuftdy2mzow56xyfkrcna2w@nbgr2ourerxo> Link: <https://github.com/shadow-maint/shadow/pull/1171> Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r--man/man2/fork.24
1 files changed, 3 insertions, 1 deletions
diff --git a/man/man2/fork.2 b/man/man2/fork.2
index 6013912776..6dffec320f 100644
--- a/man/man2/fork.2
+++ b/man/man2/fork.2
@@ -326,7 +326,8 @@ main(void)
exit(EXIT_FAILURE);
case 0:
puts("Child exiting.");
- exit(EXIT_SUCCESS);
+ fflush(stdout);
+ _exit(EXIT_SUCCESS);
default:
printf("Child is PID %jd\[rs]n", (intmax_t) pid);
puts("Parent exiting.");
@@ -339,6 +340,7 @@ main(void)
.BR clone (2),
.BR execve (2),
.BR exit (2),
+.BR _exit (2),
.BR setrlimit (2),
.BR unshare (2),
.BR vfork (2),