diff options
author | sin <sin@2f30.org> | 2014-02-10 20:04:58 +0000 |
---|---|---|
committer | sin <sin@2f30.org> | 2014-02-10 20:04:58 +0000 |
commit | 7fd10119bbb606d8e186e4e43bae3d1ab17e4184 (patch) | |
tree | dd1e86af51ba9113620c616321d69ab19a1b25c6 | |
parent | 514b100944d0b61d8e8a295ab3cd534be4cfd344 (diff) |
Use sigwait() instead of signalfd()
-rw-r--r-- | sinit.c | 16 |
1 files changed, 3 insertions, 13 deletions
@@ -31,10 +31,8 @@ static sigset_t set; int main(void) { - struct signalfd_siginfo si; - int fd; + int sig; int i; - ssize_t n; if (getpid() != 1) return EXIT_FAILURE; @@ -45,20 +43,12 @@ main(void) sigaddset(&set, sigmap[i].sig); sigprocmask(SIG_BLOCK, &set, NULL); - fd = signalfd(-1, &set, SFD_CLOEXEC); - if (fd < 0) - eprintf("sinit: signalfd:"); - spawn(rcinitcmd); while (1) { - n = read(fd, &si, sizeof(si)); - if (n < 0) - eprintf("sinit: read:"); - if (n != sizeof(si)) - continue; + sigwait(&set, &sig); for (i = 0; i < LEN(sigmap); i++) - if (sigmap[i].sig == si.ssi_signo) + if (sigmap[i].sig == sig) sigmap[i].handler(); } |