diff options
-rw-r--r-- | sandbox/sandbox.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/sandbox/sandbox.c b/sandbox/sandbox.c index c8043d7..36c4e82 100644 --- a/sandbox/sandbox.c +++ b/sandbox/sandbox.c @@ -241,13 +241,6 @@ main(int argc, char *argv[]) const char *prog = copy_program(root, argv[3]); char **cmdl = construct_cmdl(argc - 4, argv + 4, prog); - sigset_t mask, omask; - sigemptyset(&mask); - sigaddset(&mask, SIGCHLD); - sigaddset(&mask, SIGINT); // auau - sigaddset(&mask, SIGTERM); // auau - sigprocmask(SIG_BLOCK, &mask, &omask); - int stdout_fd[2], stderr_fd[2]; NONNEGATIVE(pipe2(stdout_fd, O_DIRECT)); NONNEGATIVE(pipe2(stderr_fd, O_DIRECT)); @@ -264,7 +257,6 @@ main(int argc, char *argv[]) close(stderr_fd[0]); close(stderr_fd[1]); - sigprocmask(SIG_SETMASK, &omask, NULL); child(root, cmdl); } else { sd_event *event = NULL; @@ -280,6 +272,13 @@ main(int argc, char *argv[]) NONNEGATIVE(fflags); NONNEGATIVE(fcntl(stderr_fd[0], F_SETFL, fflags | O_NONBLOCK)); + sigset_t mask; + sigemptyset(&mask); + sigaddset(&mask, SIGCHLD); + sigaddset(&mask, SIGINT); + sigaddset(&mask, SIGTERM); + sigprocmask(SIG_BLOCK, &mask, NULL); + NONNEGATIVE(sd_event_default(&event)); NONNEGATIVE(sd_event_add_signal(event, NULL, SIGCHLD, sigchld_handler, &pid)); NONNEGATIVE(sd_event_add_signal(event, NULL, SIGINT, sigint_handler, &pid)); |