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

Commit d04de525 authored by Dan Willemsen's avatar Dan Willemsen Committed by android-build-merger
Browse files

Merge "Wait for children to exit in makeparallel" am: 9b1a1850

am: c08e57ce

Change-Id: I2bc1fe1b9834ab56575db0c2e6fa96b968550382
parents 3c7e341f c08e57ce
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");
  }