30 lines
482 B
Text
30 lines
482 B
Text
|
--- dwm.c
|
||
|
+++ dwm.c
|
||
|
@@ -1671,9 +1710,25 @@ showhide(Client *c)
|
||
|
void
|
||
|
sigchld(int unused)
|
||
|
{
|
||
|
+ pid_t pid;
|
||
|
+
|
||
|
if (signal(SIGCHLD, sigchld) == SIG_ERR)
|
||
|
die("can't install SIGCHLD handler:");
|
||
|
- while (0 < waitpid(-1, NULL, WNOHANG));
|
||
|
+ while (0 < (pid = waitpid(-1, NULL, WNOHANG))) {
|
||
|
+ pid_t *p, *lim;
|
||
|
+
|
||
|
+ if (!(p = autostart_pids))
|
||
|
+ continue;
|
||
|
+ lim = &p[autostart_len];
|
||
|
+
|
||
|
+ for (; p < lim; p++) {
|
||
|
+ if (*p == pid) {
|
||
|
+ *p = -1;
|
||
|
+ break;
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
void
|