Re: [PATCH 0/5] replace signal() with sigaction()
From: Johannes Sixt <hidden>
Date: 2016-06-15 23:01:24
Am 5/28/2014 8:14, schrieb Jeremiah Mahler:
From signal(2) The behavior of signal() varies across UNIX versions, and has also var‐ ied historically across different versions of Linux. Avoid its use: use sigaction(2) instead. See Portability below. This patch set replaces calls to signal() with sigaction() in all files except sigchain.c. sigchain.c is a bit more complicated than the others and will be done in a separate patch.
In compat/mingw.c we have:
int sigaction(int sig, struct sigaction *in, struct sigaction *out)
{
if (sig != SIGALRM)
return errno = EINVAL,
error("sigaction only implemented for SIGALRM");
if (out != NULL)
return errno = EINVAL,
error("sigaction: param 3 != NULL not implemented");
timer_fn = in->sa_handler;
return 0;
}
Notice "only implemented for SIGALRM". Are adding the missing signals
somewhere (here or in a later patch)?
Jeremiah Mahler (5): progress.c: replace signal() with sigaction() daemon.c run_service(): replace signal() with sigaction() daemon.c child_handler(): replace signal() with sigaction() daemon.c service_loop(): replace signal() with sigaction() connect.c: replace signal() with sigaction() connect.c | 5 ++++- daemon.c | 15 ++++++++++++--- progress.c | 6 +++++- 3 files changed, 21 insertions(+), 5 deletions(-)
Isn't this a bit too much of code churn, given that there were no bug reports where signal handling is identified as the culprit despite the warning you cited above? -- Hannes