diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-08-20 10:30:57 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-08-20 10:30:57 +0800 |
commit | fb0fdcc59d7b0f2ed97f1894b25e4424131970f6 (patch) | |
tree | 931a2f10f47d8138658a0db2226af71891ff6149 /lib/process | |
parent | 815df381d55e09fd291145ef2b86729c12583366 (diff) | |
download | talos-petitboot-fb0fdcc59d7b0f2ed97f1894b25e4424131970f6.tar.gz talos-petitboot-fb0fdcc59d7b0f2ed97f1894b25e4424131970f6.zip |
lib/process: handle EINTR from waitpid
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'lib/process')
-rw-r--r-- | lib/process/process.c | 9 |
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; } |