Author: Armin Rigo <[email protected]>
Branch: py3.5-eintr-pep475
Changeset: r88860:0dc7003fdff5
Date: 2016-12-03 18:19 +0100
http://bitbucket.org/pypy/pypy/changeset/0dc7003fdff5/

Log:    adapt os.wait3(), os.wait4()

diff --git a/lib_pypy/_pypy_wait.py b/lib_pypy/_pypy_wait.py
--- a/lib_pypy/_pypy_wait.py
+++ b/lib_pypy/_pypy_wait.py
@@ -1,4 +1,5 @@
 import os
+from errno import EINTR
 from resource import ffi, lib, _make_struct_rusage
 
 __all__ = ["wait3", "wait4"]
@@ -7,10 +8,13 @@
 def wait3(options):
     status = ffi.new("int *")
     ru = ffi.new("struct rusage *")
-    pid = lib.wait3(status, options, ru)
-    if pid == -1:
+    while True:
+        pid = lib.wait3(status, options, ru)
+        if pid != -1:
+            break
         errno = ffi.errno
-        raise OSError(errno, os.strerror(errno))
+        if errno != EINTR:
+            raise OSError(errno, os.strerror(errno))
 
     rusage = _make_struct_rusage(ru)
 
@@ -19,10 +23,13 @@
 def wait4(pid, options):
     status = ffi.new("int *")
     ru = ffi.new("struct rusage *")
-    pid = lib.wait4(pid, status, options, ru)
-    if pid == -1:
+    while True:
+        pid = lib.wait4(pid, status, options, ru)
+        if pid != -1:
+            break
         errno = ffi.errno
-        raise OSError(errno, os.strerror(errno))
+        if errno != EINTR:
+            raise OSError(errno, os.strerror(errno))
 
     rusage = _make_struct_rusage(ru)
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to