tests: unblock SIGCHLD after closing the signalfd
authorBartosz Golaszewski <bartekgola@gmail.com>
Tue, 13 Jun 2017 12:58:20 +0000 (14:58 +0200)
committerBartosz Golaszewski <bartekgola@gmail.com>
Tue, 13 Jun 2017 13:00:04 +0000 (15:00 +0200)
Restore the state from before running the subprocess.

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
tests/gpiod-test.c

index eb3fbff6c604c23f5f76f174dc28fa3f65b9c7f2..f7073ebe9b47adc3b4aac4d89ee08d44f5fef37e 100644 (file)
@@ -554,6 +554,7 @@ void test_tool_wait(void)
        struct signalfd_siginfo sinfo;
        struct gpiotool_proc *proc;
        struct pollfd pfd;
+       sigset_t sigmask;
        int status;
        ssize_t rd;
 
@@ -586,6 +587,13 @@ void test_tool_wait(void)
        else if (rd != sizeof(sinfo))
                die("invalid size of signal info");
 
+       sigemptyset(&sigmask);
+       sigaddset(&sigmask, SIGCHLD);
+
+       status = sigprocmask(SIG_UNBLOCK, &sigmask, NULL);
+       if (status)
+               die_perr("unable to unblock signals");
+
        gpiotool_readall(proc->stdout_fd, &proc->stdout);
        gpiotool_readall(proc->stderr_fd, &proc->stderr);