X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=signal.c;h=2d40d49bdc30cad6a926c3da7aa1bec71d5417df;hp=5f121063c10591731a253fb1f227dd1bb0f29da5;hb=081e022105bbfd6c1e56730200919f276b1ff630;hpb=a50db8f0f9fd46211f0dccae287c9f016ae48019 diff --git a/signal.c b/signal.c index 5f121063..2d40d49b 100644 --- a/signal.c +++ b/signal.c @@ -17,7 +17,13 @@ */ /** \file signal.c signal handling functions */ + + #include "para.h" +#include "fd.h" + +#include + #include "error.h" static int signal_pipe[2]; @@ -41,19 +47,18 @@ static int signal_pipe[2]; */ int para_signal_init(void) { - int i; + int ret = -E_SIGNAL_PIPE; if (pipe(signal_pipe)) goto err_out; - for (i = 0; i < 2; i++) { - int fd = signal_pipe[i], flags = fcntl(fd, F_GETFL); - if (flags < 0) - goto err_out; - if (fcntl(fd, F_SETFL, ((long)flags) | O_NONBLOCK) < 0) - goto err_out; - } + ret = mark_fd_nonblock(signal_pipe[0]); + if (ret < 0) + goto err_out; + ret = mark_fd_nonblock(signal_pipe[1]); + if (ret < 0) + goto err_out; return signal_pipe[0]; err_out: - PARA_EMERG_LOG("%s", "pipe error: Can not setup signal pipe"); + PARA_EMERG_LOG("%s\n", PARA_STRERROR(-ret)); exit(EXIT_FAILURE); }