From f1048e07d5e77f87f6e004b5a787d2bf02aa868d Mon Sep 17 00:00:00 2001 From: jason Date: Fri, 11 May 2018 10:40:10 -0600 Subject: add signal-reset.c for intellij --- signal-reset.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 signal-reset.c diff --git a/signal-reset.c b/signal-reset.c new file mode 100644 index 0000000..d16b942 --- /dev/null +++ b/signal-reset.c @@ -0,0 +1,45 @@ +// this fixes signals processing for idea +// see https://youtrack.jetbrains.com/issue/IDEA-157989 +// signal-reset implemented by Thomas Lee https://github.com/thomaslee/signal-reset +#include +#include +#include +#include + +int +main (int argc, char **argv) +{ + sigset_t sigs; + struct sigaction sa; + + sigemptyset(&sigs); + sigaddset(&sigs, SIGINT); + sigaddset(&sigs, SIGTERM); + if (sigprocmask(SIG_UNBLOCK, &sigs, 0) != 0) { + fprintf(stderr, "sigprocmask failed\n"); + return 1; + } + + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = SIG_DFL; + if (sigaction(SIGINT, &sa, 0) != 0) { + fprintf(stderr, "sigaction failed for SIGINT\n"); + return 1; + } + + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = SIG_DFL; + if (sigaction(SIGTERM, &sa, 0) != 0) { + fprintf(stderr, "sigaction failed for SIGTERM\n"); + return 1; + } + + if (argc <= 1) { + fprintf(stderr, "usage: %s [args...]\n", argv[0]); + return 1; + } + + execvp(argv[1], argv + 1); + fprintf(stderr, "execvp(...) failed\n"); + return 1; +} -- cgit v1.2.1