Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b1a1850 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Wait for children to exit in makeparallel"

parents a7d4e0cd f0e2986c
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -357,18 +357,23 @@ int main(int argc, char* argv[]) {

  static pid_t pid;

  // Set up signal handlers to forward SIGTERM to child
  // Assume that all other signals are sent to the entire process group
  // Set up signal handlers to forward SIGTERM to child.
  // Assume that all other signals are sent to the entire process group,
  // and that we'll wait for our child to exit instead of handling them.
  struct sigaction action = {};
  action.sa_flags = SA_SIGINFO | SA_RESTART,
  action.sa_sigaction = [](int signal, siginfo_t*, void*) {
    if (pid > 0) {
  action.sa_flags = SA_RESTART;
  action.sa_handler = [](int signal) {
    if (signal == SIGTERM && pid > 0) {
      kill(pid, signal);
    }
  };

  int ret = 0;
  if (!ret) ret = sigaction(SIGHUP, &action, NULL);
  if (!ret) ret = sigaction(SIGINT, &action, NULL);
  if (!ret) ret = sigaction(SIGQUIT, &action, NULL);
  if (!ret) ret = sigaction(SIGTERM, &action, NULL);
  if (!ret) ret = sigaction(SIGALRM, &action, NULL);
  if (ret < 0) {
    error(errno, errno, "sigaction failed");
  }