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

Commit 3b06556f 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

am: d04de525

Change-Id: Ia6c4cb26f2d5d8c485f1139ac128e7482b6235a0
parents 03802377 d04de525
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");
  }