Bump to e81f17d.
restore SIGCHLD sighandler to default before spawning a program From sigaction(2): A child created via fork(2) inherits a copy of its parent's signal dispositions. During an execve(2), the dispositions of handled signals are reset to the default; the dispositions of ignored signals are left unchanged. This refused to start directly some programs from configuring in config.h: static Key keys[] = { MODKEY, XK_o, spawn, {.v = cmd } }, }; Some reported programs that didn't start were: mpv, anki, dmenu_extended. Reported by pfx. Initial patch suggestion by Storkman. Ref. https://git.suckless.org/dwm/commit/e81f17d4c196aaed6893fd4beed49991caa3e2a4.html
This commit is contained in:
8
dwm.c
8
dwm.c
@@ -3985,6 +3985,8 @@ void
|
||||
spawn(const Arg *arg)
|
||||
#endif // RIODRAW_PATCH
|
||||
{
|
||||
struct sigaction sa;
|
||||
|
||||
#if RIODRAW_PATCH
|
||||
pid_t pid;
|
||||
#endif // RIODRAW_PATCH
|
||||
@@ -4050,6 +4052,12 @@ spawn(const Arg *arg)
|
||||
}
|
||||
#endif // SPAWNCMD_PATCH
|
||||
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]);
|
||||
}
|
||||
|
Reference in New Issue
Block a user