diff options
| author | Simon Ser <contact@emersion.fr> | 2025-04-27 18:36:18 +0200 |
|---|---|---|
| committer | Kenny Levinsen <kl@kl.wtf> | 2025-04-27 18:42:12 +0200 |
| commit | 38a42f97d46931e97693610c999ea51834b71352 (patch) | |
| tree | af3a5d748d7ddaff3a890d90a5e3a10b98be90dd | |
| parent | 0e19d85d37e556721f982c3f63d4e2927f306b18 (diff) | |
Replace signal() with sigaction()
The man page for signal(3) reads:
> new applications should use sigaction() rather than signal()
| -rw-r--r-- | sway/main.c | 12 | ||||
| -rw-r--r-- | swaybar/main.c | 5 | ||||
| -rw-r--r-- | swaynag/main.c | 3 |
3 files changed, 12 insertions, 8 deletions
diff --git a/sway/main.c b/sway/main.c index 56f09b7e..69efd6cb 100644 --- a/sway/main.c +++ b/sway/main.c @@ -161,19 +161,21 @@ static void restore_signals(void) { sigset_t set; sigemptyset(&set); sigprocmask(SIG_SETMASK, &set, NULL); - signal(SIGCHLD, SIG_DFL); - signal(SIGPIPE, SIG_DFL); + + struct sigaction sa_dfl = { .sa_handler = SIG_DFL }; + sigaction(SIGCHLD, &sa_dfl, NULL); + sigaction(SIGPIPE, &sa_dfl, NULL); } static void init_signals(void) { wl_event_loop_add_signal(server.wl_event_loop, SIGTERM, term_signal, NULL); wl_event_loop_add_signal(server.wl_event_loop, SIGINT, term_signal, NULL); + struct sigaction sa_ign = { .sa_handler = SIG_IGN }; // avoid need to reap children - signal(SIGCHLD, SIG_IGN); - + sigaction(SIGCHLD, &sa_ign, NULL); // prevent ipc write errors from crashing sway - signal(SIGPIPE, SIG_IGN); + sigaction(SIGPIPE, &sa_ign, NULL); pthread_atfork(NULL, NULL, restore_signals); } diff --git a/swaybar/main.c b/swaybar/main.c index 3dc67233..e1b0ceca 100644 --- a/swaybar/main.c +++ b/swaybar/main.c @@ -93,8 +93,9 @@ int main(int argc, char **argv) { free(socket_path); - signal(SIGINT, sig_handler); - signal(SIGTERM, sig_handler); + struct sigaction sa = { .sa_handler = sig_handler }; + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); swaybar.running = true; bar_run(&swaybar); diff --git a/swaynag/main.c b/swaynag/main.c index 54317dce..b68157ff 100644 --- a/swaynag/main.c +++ b/swaynag/main.c @@ -102,7 +102,8 @@ int main(int argc, char **argv) { sway_log(SWAY_DEBUG, "\t[%s] `%s`", button->text, button->action); } - signal(SIGTERM, sig_handler); + struct sigaction sa = { .sa_handler = sig_handler }; + sigaction(SIGTERM, &sa, NULL); swaynag_setup(&swaynag); swaynag_run(&swaynag); |
