summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-08-20 10:30:57 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-08-20 10:30:57 +0800
commitfb0fdcc59d7b0f2ed97f1894b25e4424131970f6 (patch)
tree931a2f10f47d8138658a0db2226af71891ff6149
parent815df381d55e09fd291145ef2b86729c12583366 (diff)
downloadtalos-petitboot-fb0fdcc59d7b0f2ed97f1894b25e4424131970f6.tar.gz
talos-petitboot-fb0fdcc59d7b0f2ed97f1894b25e4424131970f6.zip
lib/process: handle EINTR from waitpid
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r--lib/process/process.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/process/process.c b/lib/process/process.c
index 6fac649..1a16fb6 100644
--- a/lib/process/process.c
+++ b/lib/process/process.c
@@ -355,8 +355,13 @@ int process_run_sync(struct process *process)
process_read_stdout(procinfo);
- rc = waitpid(process->pid, &process->exit_status, 0);
- if (rc == -1) {
+ for (;;) {
+ rc = waitpid(process->pid, &process->exit_status, 0);
+ if (rc >= 0)
+ break;
+ if (errno == EINTR)
+ continue;
+
pb_log("%s: waitpid failed: %s\n", __func__, strerror(errno));
return rc;
}
OpenPOWER on IntegriCloud