]> git.ipfire.org Git - thirdparty/man-pages.git/commitdiff
man/man2/fork.2: Add _exit(2) to example
authorTobias Stoeckmann <tobias@stoeckmann.org>
Mon, 13 Jan 2025 16:40:43 +0000 (17:40 +0100)
committerAlejandro Colomar <alx@kernel.org>
Tue, 14 Jan 2025 00:02:19 +0000 (01:02 +0100)
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>
man/man2/fork.2

index 6013912776eda86441d0d0fe7d9fda3c5692e348..6dffec320fd3cc4b3b7c9b6c199136215cadf18a 100644 (file)
@@ -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),