Introduction
Introduction Statistics Contact Development Disclaimer Help
restore SIGCHLD sighandler to default before spawning a program - dwm - dynamic…
git clone git://git.suckless.org/dwm
Log
Files
Refs
README
LICENSE
---
commit e81f17d4c196aaed6893fd4beed49991caa3e2a4
parent 348f6559ab0d4793db196ffa56ba96ab95a594a6
Author: Hiltjo Posthuma <[email protected]>
Date: Sun, 9 Apr 2023 12:37:14 +0200
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 defau…
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.
Diffstat:
M dwm.c | 8 ++++++++
1 file changed, 8 insertions(+), 0 deletions(-)
---
diff --git a/dwm.c b/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]);
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.