diff options
author | Laxmi Devi <Laxmi.Devi@in.bosch.com> | 2018-05-24 15:04:23 +0530 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-09-20 10:30:26 +0200 |
commit | 399a5586a60b81daf483d543adefd025e705c6ed (patch) | |
tree | dbd549d12a1a338d55ccfe4d104a9782d0a18965 /src | |
parent | 43dd0b6fd560f97e2584364593c5e44f2262c281 (diff) | |
download | jalv-399a5586a60b81daf483d543adefd025e705c6ed.tar.gz jalv-399a5586a60b81daf483d543adefd025e705c6ed.tar.bz2 jalv-399a5586a60b81daf483d543adefd025e705c6ed.zip |
Use sigaction() instead of signal()
Issue is that even after ctrl+c, fgets is waiting for a newline.
See signal(7) for details. We have to either use siginterrupt() together with
signal(), or use sigaction() instead of signal() for registering the signal
handler, in order to disable restarting a read() system call after a signal.
Signed-off-by: Laxmi Devi <Laxmi.Devi@in.bosch.com>
Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/jalv.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -878,8 +878,18 @@ main(int argc, char** argv) zix_sem_init(&jalv.paused, 0); zix_sem_init(&jalv.worker.sem, 0); +#ifdef HAVE_SIGACTION + struct sigaction action; + sigemptyset(&action.sa_mask); + action.sa_flags = 0; + action.sa_handler = signal_handler; + sigaction(SIGINT, &action, NULL); + sigaction(SIGTERM, &action, NULL); +#else + /* May not work in combination with fgets in the console interface */ signal(SIGINT, signal_handler); signal(SIGTERM, signal_handler); +#endif /* Find all installed plugins */ LilvWorld* world = lilv_world_new(); |