diff options
author | Emil Renner Berthing <esmil@mailme.dk> | 2013-06-03 13:01:02 +0200 |
---|---|---|
committer | Emil Renner Berthing <esmil@mailme.dk> | 2013-06-08 21:33:07 +0200 |
commit | a4c5beadd3d444f31dd8109e329b570dbbc96209 (patch) | |
tree | 73d63e7d38da87e72bae3a84c9037a8068dc008a | |
parent | 383f84fa0535a2aef958b2ece7c1ba0cd973b524 (diff) | |
download | lem-a4c5beadd3d444f31dd8109e329b570dbbc96209.tar.gz lem-a4c5beadd3d444f31dd8109e329b570dbbc96209.tar.xz lem-a4c5beadd3d444f31dd8109e329b570dbbc96209.zip |
set EV_SIGNAL_ENABLE and EV_CHILD_ENABLE
to prepare for upcoming signal library
and reap child processes even when
EV_CHILD_ENABLE is not set
-rw-r--r-- | bin/lem.c | 24 | ||||
-rw-r--r-- | ev-config.h.in | 4 |
2 files changed, 14 insertions, 14 deletions
@@ -94,21 +94,17 @@ lem_xmalloc(size_t size) } static int -ignore_sigpipe(void) +setsignal(int signal, void (*handler)(int), int flags) { struct sigaction act; - if (sigaction(SIGPIPE, NULL, &act)) { - lem_log_error("lem: error getting signal action: %s", - strerror(errno)); - return -1; - } + act.sa_handler = handler; + sigemptyset(&act.sa_mask); + act.sa_flags = flags; - act.sa_handler = SIG_IGN; - - if (sigaction(SIGPIPE, &act, NULL)) { - lem_log_error("lem: error setting signal action: %s", - strerror(errno)); + if (sigaction(signal, &act, NULL)) { + lem_log_error("lem: error setting signal %d: %s", + signal, strerror(errno)); return -1; } @@ -340,7 +336,11 @@ main(int argc, char *argv[]) return EXIT_FAILURE; } - if (ignore_sigpipe()) + if (setsignal(SIGPIPE, SIG_IGN, 0) +#if !EV_CHILD_ENABLE + || setsignal(SIGCHLD, SIG_DFL, SA_NOCLDSTOP | SA_NOCLDWAIT) +#endif + ) goto error; /* create main Lua state */ diff --git a/ev-config.h.in b/ev-config.h.in index 0952722..38324d3 100644 --- a/ev-config.h.in +++ b/ev-config.h.in @@ -35,9 +35,9 @@ #define EV_PREPARE_ENABLE 0 #define EV_CHECK_ENABLE 0 #define EV_FORK_ENABLE 0 -#define EV_SIGNAL_ENABLE 0 +#define EV_SIGNAL_ENABLE 1 #define EV_ASYNC_ENABLE 1 -#define EV_CHILD_ENABLE 0 +#define EV_CHILD_ENABLE 1 #define EV_MINPRI 0 #define EV_MAXPRI 0 |