From cb1fcd3eaf964832417cafd4df981f77be3697ad Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 4 Aug 2020 14:25:41 +0200 Subject: [PATCH] LaunchServer: Disown child processes after spawning --- Services/LaunchServer/Launcher.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Services/LaunchServer/Launcher.cpp b/Services/LaunchServer/Launcher.cpp index ef179ec403..28a47b8949 100644 --- a/Services/LaunchServer/Launcher.cpp +++ b/Services/LaunchServer/Launcher.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -66,17 +67,17 @@ String Handler::to_details_str() const obj.add("executable", executable); obj.add("name", name); switch (handler_type) { - case Type::Application: - obj.add("type", "app"); - break; - case Type::UserDefault: - obj.add("type", "userdefault"); - break; - case Type::UserPreferred: - obj.add("type", "userpreferred"); - break; - default: - break; + case Type::Application: + obj.add("type", "app"); + break; + case Type::UserDefault: + obj.add("type", "userdefault"); + break; + case Type::UserPreferred: + obj.add("type", "userpreferred"); + break; + default: + break; } if (!icons.is_empty()) { JsonObject icons_obj; @@ -220,6 +221,9 @@ bool spawn(String executable, String argument) if ((errno = posix_spawn(&child_pid, executable.characters(), nullptr, nullptr, const_cast(argv), environ))) { perror("posix_spawn"); return false; + } else { + if (disown(child_pid) < 0) + perror("disown"); } return true; }