systemd-inhibit: ignore signal interrupt from keyboard (#8569)

By default both processes, systemd-inhibit and the forked one, receive
the signals. Pressing Ctrl+C on the keyboard results in SIGINT being
sent to the processes, followed by SIGTERM being sent to the forked
process when systemd-inhibit exits. This can cause trouble when the
forked process does not clean up properly but exit immediately.

Instead make systemd-inhibit ignore SIGINT, leaving it to the forked
process to clean up and exit.
This commit is contained in:
Christian Hesse 2018-03-28 21:58:10 +02:00 committed by Lennart Poettering
parent 2d684e65aa
commit 106f12a08f
1 changed files with 3 additions and 0 deletions

View File

@ -254,6 +254,9 @@ int main(int argc, char *argv[]) {
_cleanup_free_ char *w = NULL;
pid_t pid;
/* Ignore SIGINT and allow the forked process to receive it */
(void) ignore_signals(SIGINT, -1);
if (!arg_who)
arg_who = w = strv_join(argv + optind, " ");