]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
unshare --fork: Ignore SIGINT and SIGTERM in parent
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 2 Jul 2020 14:26:39 +0000 (16:26 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 2 Jul 2020 14:35:21 +0000 (16:35 +0200)
sys-utils/unshare.c

index ed2eb31e80e855232c796bc938de9eecb663fe08..47c468d79a97a69de0573d175df435ad057455d1 100644 (file)
@@ -555,6 +555,9 @@ int main(int argc, char *argv[])
                settime(monotonic, CLOCK_MONOTONIC);
 
        if (forkit) {
+               signal(SIGINT, SIG_IGN);
+               signal(SIGTERM, SIG_IGN);
+
                /* force child forking before mountspace binding
                 * so pid_for_children is populated */
                pid = fork();
@@ -602,6 +605,10 @@ int main(int argc, char *argv[])
        if (pid) {
                if (waitpid(pid, &status, 0) == -1)
                        err(EXIT_FAILURE, _("waitpid failed"));
+
+               signal(SIGINT, SIG_DFL);
+               signal(SIGTERM, SIG_DFL);
+
                if (WIFEXITED(status))
                        return WEXITSTATUS(status);
                if (WIFSIGNALED(status))