From 593b4c5a46957fdc15a3c1b68598ba0e537b7b56 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 16 Nov 2017 18:26:32 +0530 Subject: [PATCH] Use sigaction() rather than signal() to register signal handlers --- kitty/child-monitor.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kitty/child-monitor.c b/kitty/child-monitor.c index 06ec4c635..c1201b0f9 100644 --- a/kitty/child-monitor.c +++ b/kitty/child-monitor.c @@ -128,8 +128,9 @@ new(PyTypeObject *type, PyObject *args, PyObject UNUSED *kwds) { } if (!self_pipe(wakeup_fds)) return PyErr_SetFromErrno(PyExc_OSError); if (!self_pipe(signal_fds)) return PyErr_SetFromErrno(PyExc_OSError); - if (signal(SIGINT, handle_signal) == SIG_ERR) return PyErr_SetFromErrno(PyExc_OSError); - if (signal(SIGTERM, handle_signal) == SIG_ERR) return PyErr_SetFromErrno(PyExc_OSError); + struct sigaction act = {.sa_handler=handle_signal}; + if (sigaction(SIGINT, &act, NULL) != 0) return PyErr_SetFromErrno(PyExc_OSError); + if (sigaction(SIGTERM, &act, NULL) != 0) return PyErr_SetFromErrno(PyExc_OSError); if (siginterrupt(SIGINT, false) != 0) return PyErr_SetFromErrno(PyExc_OSError); if (siginterrupt(SIGTERM, false) != 0) return PyErr_SetFromErrno(PyExc_OSError); self = (ChildMonitor *)type->tp_alloc(type, 0);