diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-07-25 22:24:00 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-07-25 22:30:19 +0200 |
commit | 75dea27979f0d219eed9c6afc3a721f592f7ca2a (patch) | |
tree | a7724d2cf73aae17bddeddd3c3d0906320f35e18 /unpack/fill_files.c | |
parent | 7c5cd1e104f23ec7d9c23086993630f398e2d8e0 (diff) |
Terminate the unpacker child processes if the main process exits
Should the main process exit (e.g. the user presses CTRL+C) or explcitily
sends it a signal, the desired behaviour is for the children to stop
unpacking and exit.
This commit adds a line to configure the kernel to send SIGKILL to the
children if their parent dies.
The same option also exists on various BSDs (not all of them) but with a
different name which has to be checked for and adjusted should the program
be required to run on one of those.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'unpack/fill_files.c')
-rw-r--r-- | unpack/fill_files.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/unpack/fill_files.c b/unpack/fill_files.c index 865d050..88efd01 100644 --- a/unpack/fill_files.c +++ b/unpack/fill_files.c @@ -97,6 +97,9 @@ int fill_unpacked_files(fstree_t *fs, data_reader_t *data, int flags, pid = fork(); if (pid == 0) { + /* Kill the child when the parent process dies */ + prctl(PR_SET_PDEATHSIG, SIGKILL); + if (fill_files(data, sublists[i], flags)) exit(EXIT_FAILURE); exit(EXIT_SUCCESS); |