aboutsummaryrefslogtreecommitdiff
path: root/lib/spawn.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/spawn.ml')
-rw-r--r--lib/spawn.ml8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/spawn.ml b/lib/spawn.ml
index e350926b75..f32aa4d628 100644
--- a/lib/spawn.ml
+++ b/lib/spawn.ml
@@ -221,9 +221,11 @@ let kill_if p ~sec test =
false
end else true)
-let wait { pid = (unixpid, _) } =
- try snd (Unix.waitpid [] unixpid)
- with Unix.Unix_error _ -> Unix.WEXITED 0o400
+let rec wait p =
+ try snd (Unix.waitpid [] (fst p.pid))
+ with
+ | Unix.Unix_error (Unix.EINTR, _, _) -> wait p
+ | Unix.Unix_error _ -> Unix.WEXITED 0o400
end