Commit Diff


commit - 348f6559ab0d4793db196ffa56ba96ab95a594a6
commit + e81f17d4c196aaed6893fd4beed49991caa3e2a4
blob - c2bd8710544eb4b4e7eaa4a1307e1f1dfd8d16ba
blob + f1d86b2c7a900c9380f6d5fc1424dad1bf2ddaf8
--- dwm.c
+++ dwm.c
@@ -1647,12 +1647,20 @@ showhide(Client *c)
 void
 spawn(const Arg *arg)
 {
+	struct sigaction sa;
+
 	if (arg->v == dmenucmd)
 		dmenumon[0] = '0' + selmon->num;
 	if (fork() == 0) {
 		if (dpy)
 			close(ConnectionNumber(dpy));
 		setsid();
+
+		sigemptyset(&sa.sa_mask);
+		sa.sa_flags = 0;
+		sa.sa_handler = SIG_DFL;
+		sigaction(SIGCHLD, &sa, NULL);
+
 		execvp(((char **)arg->v)[0], (char **)arg->v);
 		die("dwm: execvp '%s' failed:", ((char **)arg->v)[0]);
 	}