chiark / gitweb /
main: set PR_SET_CHILD_REAPER for MANAGER_USER
[elogind.git] / src / core / main.c
index c7a7a87e7a6a525a336678b965980aa9ffc241e2..1326b94f689814ad6edeaec253cb29d74804cbc5 100644 (file)
@@ -1500,6 +1500,15 @@ int main(int argc, char *argv[]) {
                 }
         }
 
+        if (arg_running_as == MANAGER_USER) {
+                /* Become reaper of our children */
+                r = prctl(PR_SET_CHILD_SUBREAPER, 1);
+                if (r < 0)
+                        log_error("Failed to prctl(PR_SET_CHILD_SUBREAPER): %s", strerror(-r));
+                if (r == -EINVAL)
+                        log_error("Perhaps the kernel version is too old (< 3.4?)");
+        }
+
         r = manager_new(arg_running_as, &m);
         if (r < 0) {
                 log_error("Failed to allocate manager object: %s", strerror(-r));