diff options
author | Andreas Kling <kling@serenityos.org> | 2020-08-04 13:51:11 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-08-04 18:17:16 +0200 |
commit | 7de831efc65993c44c9e87342a08f6a122250794 (patch) | |
tree | c13e3ae3fa83693eec89be1a1414ebd7ef582b9d /Libraries/LibC/serenity.cpp | |
parent | 83a4fbf5481322989e2e4a83a13a3fc570130c9a (diff) | |
download | serenity-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 'Libraries/LibC/serenity.cpp')
-rw-r--r-- | Libraries/LibC/serenity.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Libraries/LibC/serenity.cpp b/Libraries/LibC/serenity.cpp index 68e10accb0..5837aee15f 100644 --- a/Libraries/LibC/serenity.cpp +++ b/Libraries/LibC/serenity.cpp @@ -30,6 +30,12 @@ extern "C" { +int disown(pid_t pid) +{ + int rc = syscall(SC_disown, pid); + __RETURN_WITH_ERRNO(rc, rc, -1); +} + int module_load(const char* path, size_t path_length) { int rc = syscall(SC_module_load, path, path_length); |