summaryrefslogtreecommitdiff
path: root/Base
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2020-08-04 13:51:11 +0200
committerAndreas Kling <kling@serenityos.org>2020-08-04 18:17:16 +0200
commit7de831efc65993c44c9e87342a08f6a122250794 (patch)
treec13e3ae3fa83693eec89be1a1414ebd7ef582b9d /Base
parent83a4fbf5481322989e2e4a83a13a3fc570130c9a (diff)
downloadserenity-7de831efc65993c44c9e87342a08f6a122250794.zip
Kernel+LibC: Add sys$disown() for disowning child processes
This syscall allows a parent process to disown a child process, setting its parent PID to 0. Unparented processes are automatically reaped by the kernel upon exit, and no sys$waitid() is required. This will make it much nicer to do spawn-and-forget which is common in the GUI environment.
Diffstat (limited to 'Base')
-rw-r--r--Base/usr/share/man/man2/disown.md25
1 files changed, 25 insertions, 0 deletions
diff --git a/Base/usr/share/man/man2/disown.md b/Base/usr/share/man/man2/disown.md
new file mode 100644
index 0000000000..8416029865
--- /dev/null
+++ b/Base/usr/share/man/man2/disown.md
@@ -0,0 +1,25 @@
+## Name
+
+disown - disown a child process
+
+## Synopsis
+
+```**c++
+#include <serenity.h>
+
+int disown(pid_t pid);
+```
+
+## Description
+
+`disown()` unparents a child process of the calling process. The child's parent PID is set to zero, which allows the kernel to automatically reap it upon death.
+
+## Pledge
+
+In pledged programs, the `proc` promise is required for this system call.
+
+## Errors
+
+* `ESRCH`: No process with PID `pid` was found.
+* `ECHILD`: The target process is not a child of the calling process.
+