do not call signal-unsafe function inside sighanlder
6613d9f9
die() calls vprintf, fputc and exit; none of these are async-signal-safe, see `man 7 signal-safety`.
1 file(s) · +2 −2
die() calls vprintf, fputc and exit; none of these are async-signal-safe, see `man 7 signal-safety`.
| 1541 | 1541 | Atom utf8string; |
|
| 1542 | 1542 | ||
| 1543 | 1543 | /* clean up any zombies immediately */ |
|
| 1544 | + | if (signal(SIGCHLD, sigchld) == SIG_ERR) |
|
| 1545 | + | die("can't install SIGCHLD handler:"); |
|
| 1544 | 1546 | sigchld(0); |
|
| 1545 | 1547 | ||
| 1546 | 1548 | /* init screen */ |
|
| 1638 | 1640 | void |
|
| 1639 | 1641 | sigchld(int unused) |
|
| 1640 | 1642 | { |
|
| 1641 | - | if (signal(SIGCHLD, sigchld) == SIG_ERR) |
|
| 1642 | - | die("can't install SIGCHLD handler:"); |
|
| 1643 | 1643 | while (0 < waitpid(-1, NULL, WNOHANG)); |
|
| 1644 | 1644 | } |
|
| 1645 | 1645 | ||