~kris/suckless

tabbed

97ba13b1eb4756fb1a024fd1e83df6e393befd27 — Hiltjo Posthuma 3 years ago 66ef5f3
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.
1 files changed, 8 insertions(+), 0 deletions(-)

M tabbed.c
M tabbed.c => tabbed.c +8 -0
@@ 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,