diff --git a/src/signals.c b/src/signals.c index cbaf252..8f0dabd 100644 --- a/src/signals.c +++ b/src/signals.c @@ -24,6 +24,16 @@ void signal_handler(int sig) signal_pending = sig; } +void reset_signals() +{ + for (int sig = 1; sig < 32; sig++) { + signal(sig, SIG_DFL); + } + sigset_t signal_set; + sigemptyset(&signal_set); + sigprocmask(SIG_SETMASK, &signal_set, NULL); +} + void init_signals() { // Set signal handlers diff --git a/src/signals.h b/src/signals.h index cf729dd..ec1f9c4 100644 --- a/src/signals.h +++ b/src/signals.h @@ -5,6 +5,7 @@ void init_signals(); void init_signals_postconfig(); void emit_self_restart(const char *reason); int get_signal_pending(); +void reset_signals(); void handle_sigchld_events(); diff --git a/src/util/common.c b/src/util/common.c index c377316..b540ddb 100644 --- a/src/util/common.c +++ b/src/util/common.c @@ -59,6 +59,7 @@ #include "../panel.h" #include "timer.h" +#include "signals.h" void write_string(int fd, const char *s) { @@ -398,6 +399,7 @@ pid_t tint_exec(const char *command, if (dir) chdir(dir); close_all_fds(); + reset_signals(); if (terminal) { #if !defined(__OpenBSD__) fprintf(stderr, "tint2: executing in x-terminal-emulator: %s\n", command);