|
|
|
@ -50,15 +50,15 @@ std::string as_string(const T& val) { |
|
|
|
|
return out.str(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void LogStatus(int status) { |
|
|
|
|
static void LogStatus(int status, const char* label) { |
|
|
|
|
if (WIFEXITED(status)) { |
|
|
|
|
gpr_log(GPR_INFO, "subprocess exited with status %d", |
|
|
|
|
gpr_log(GPR_INFO, "%s: subprocess exited with status %d", label, |
|
|
|
|
WEXITSTATUS(status)); |
|
|
|
|
} else if (WIFSIGNALED(status)) { |
|
|
|
|
gpr_log(GPR_INFO, "subprocess terminated with signal %d", |
|
|
|
|
gpr_log(GPR_INFO, "%s: subprocess terminated with signal %d", label, |
|
|
|
|
WTERMSIG(status)); |
|
|
|
|
} else { |
|
|
|
|
gpr_log(GPR_INFO, "unknown subprocess status: %d", status); |
|
|
|
|
gpr_log(GPR_INFO, "%s: unknown subprocess status: %d", label, status); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -87,21 +87,18 @@ int main(int argc, char** argv) { |
|
|
|
|
for (int i = 1; i < argc; i++) { |
|
|
|
|
args.push_back(argv[i]); |
|
|
|
|
} |
|
|
|
|
gpr_log(GPR_INFO, "calling Join() on driver"); |
|
|
|
|
int status = SubProcess(args).Join(); |
|
|
|
|
if (status != 0) { |
|
|
|
|
LogStatus(status); |
|
|
|
|
GPR_ASSERT(status == 0); |
|
|
|
|
LogStatus(status, "driver"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (auto it = jobs.begin(); it != jobs.end(); ++it) { |
|
|
|
|
(*it)->Interrupt(); |
|
|
|
|
} |
|
|
|
|
for (auto it = jobs.begin(); it != jobs.end(); ++it) { |
|
|
|
|
gpr_log(GPR_INFO, "calling Join() on job"); |
|
|
|
|
status = (*it)->Join(); |
|
|
|
|
if (status != 0) { |
|
|
|
|
LogStatus(status); |
|
|
|
|
LogStatus(status, "worker"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|