tabbed

tab interface for application supporting Xembed
git clone git://git.suckless.org/tabbed
Log | Files | Refs | README | LICENSE

commit 97ba13b1eb4756fb1a024fd1e83df6e393befd27
parent 66ef5f33e9987b70e2457c4a459f7ed84184604b
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sun,  9 Apr 2023 12:47:07 +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 default;
the dispositions of ignored signals are left unchanged.

This refused to start directly some programs from configuring in config.h:

Some reported programs that didn't start were: mpv.

Similar to the commit e81f17d4c196aaed6893fd4beed49991caa3e2a4 from dwm.

Diffstat:
Mtabbed.c | 8++++++++
1 file changed, 8 insertions(+), 0 deletions(-)

diff --git a/tabbed.c b/tabbed.c @@ -1088,11 +1088,19 @@ setup(void) void spawn(const Arg *arg) { + struct sigaction sa; + 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); + if (arg && arg->v) { execvp(((char **)arg->v)[0], (char **)arg->v); fprintf(stderr, "%s: execvp %s", argv0,