mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-23 10:14:55 +00:00
Use sigaction(2) instead of signal(3) to avoid the signal handler being
re-entered.
This commit is contained in:
parent
93c9745e20
commit
5b3df62e01
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=100697
|
@ -94,6 +94,7 @@ int doclean; /* Should cleanup() remove output? */
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
struct sigaction sa;
|
||||||
long i;
|
long i;
|
||||||
int ch;
|
int ch;
|
||||||
const char *expr;
|
const char *expr;
|
||||||
|
@ -145,9 +146,15 @@ main(int argc, char *argv[])
|
||||||
if (!kflag) {
|
if (!kflag) {
|
||||||
doclean = 1;
|
doclean = 1;
|
||||||
atexit(cleanup);
|
atexit(cleanup);
|
||||||
signal(SIGHUP, handlesig);
|
sa.sa_flags = 0;
|
||||||
signal(SIGINT, handlesig);
|
sa.sa_handler = handlesig;
|
||||||
signal(SIGTERM, handlesig);
|
sigemptyset(&sa.sa_mask);
|
||||||
|
sigaddset(&sa.sa_mask, SIGHUP);
|
||||||
|
sigaddset(&sa.sa_mask, SIGINT);
|
||||||
|
sigaddset(&sa.sa_mask, SIGTERM);
|
||||||
|
sigaction(SIGHUP, &sa, NULL);
|
||||||
|
sigaction(SIGINT, &sa, NULL);
|
||||||
|
sigaction(SIGTERM, &sa, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
lineno = 0;
|
lineno = 0;
|
||||||
|
|
Loading…
Reference in a new issue