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

am: d04de52560

Change-Id: Ia6c4cb26f2d5d8c485f1139ac128e7482b6235a0
This commit is contained in:
Dan Willemsen 2017-02-22 03:38:56 +00:00 committed by android-build-merger
commit 3b06556f3a
1 changed files with 10 additions and 5 deletions

View File

@ -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");
}