Simplify, no need to reset signal disposition in handler
On modern systems, both *BSD and Linux using GLIBC/musl, the signal's disposition is not reset to SIG_DFL on invocation of its handler. On Linux this is true because GLIBC/musl wraps signal() in sigaction() with the same semantics as BSD. A follow-up commit will refactor to use sigaction(). Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
@@ -2297,20 +2297,13 @@ void wallmsg(struct filed *f, struct iovec *iov)
|
||||
|
||||
void reapchild(int signo)
|
||||
{
|
||||
int saved_errno = errno;
|
||||
|
||||
#ifdef linux
|
||||
int saved_errno;
|
||||
int status;
|
||||
|
||||
while (wait3(&status, WNOHANG, NULL) > 0)
|
||||
saved_errno = errno;
|
||||
while (waitpid(-1, &status, WNOHANG) > 0)
|
||||
;
|
||||
|
||||
signal(SIGCHLD, reapchild); /* reset signal handler -ASP */
|
||||
#else
|
||||
signal(SIGCHLD, reapchild); /* reset signal handler -ASP */
|
||||
wait(NULL);
|
||||
#endif
|
||||
|
||||
errno = saved_errno;
|
||||
}
|
||||
|
||||
@@ -2415,7 +2408,6 @@ void domark(int signo)
|
||||
DupesPending--;
|
||||
}
|
||||
}
|
||||
(void)signal(SIGALRM, domark);
|
||||
|
||||
LastAlarm = MarkInterval - MarkSeq;
|
||||
if (DupesPending && LastAlarm > TIMERINTVL)
|
||||
@@ -3095,7 +3087,6 @@ static void logit(char *fmt, ...)
|
||||
void sighup_handler(int signo)
|
||||
{
|
||||
restart = 1;
|
||||
signal(SIGHUP, sighup_handler);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user