From: Jeremy Kerr Date: Tue, 20 Aug 2013 02:30:57 +0000 (+0800) Subject: lib/process: handle EINTR from waitpid X-Git-Tag: v1.0.0~507 X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=commitdiff_plain;h=fb0fdcc59d7b0f2ed97f1894b25e4424131970f6;ds=sidebyside lib/process: handle EINTR from waitpid Signed-off-by: Jeremy Kerr --- 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; }