diff options
Diffstat (limited to 'src/syscall/exec_unix.go')
-rw-r--r-- | src/syscall/exec_unix.go | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/syscall/exec_unix.go b/src/syscall/exec_unix.go index 0345af44f9..cb08b7084c 100644 --- a/src/syscall/exec_unix.go +++ b/src/syscall/exec_unix.go @@ -217,7 +217,12 @@ func forkExec(argv0 string, argv []string, attr *ProcAttr) (pid int, err error) // Read child error status from pipe. Close(p[1]) - n, err = readlen(p[0], (*byte)(unsafe.Pointer(&err1)), int(unsafe.Sizeof(err1))) + for { + n, err = readlen(p[0], (*byte)(unsafe.Pointer(&err1)), int(unsafe.Sizeof(err1))) + if err != EINTR { + break + } + } Close(p[0]) if err != nil || n != 0 { if n == int(unsafe.Sizeof(err1)) { |