summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qprocess_unix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io/qprocess_unix.cpp')
-rw-r--r--src/corelib/io/qprocess_unix.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index 0fc9464f52..7b6da90b04 100644
--- a/src/corelib/io/qprocess_unix.cpp
+++ b/src/corelib/io/qprocess_unix.cpp
@@ -1091,20 +1091,17 @@ bool QProcessPrivate::waitForDeadChild()
return true; // child has already exited
// read the process information from our fd
- siginfo_t info;
- qint64 ret = qt_safe_read(forkfd, &info, sizeof info);
- Q_ASSERT(ret == sizeof info);
- Q_UNUSED(ret);
+ forkfd_info info;
+ int ret;
+ EINTR_LOOP(ret, forkfd_wait(forkfd, &info, Q_NULLPTR));
- Q_ASSERT(info.si_pid == pid_t(pid));
-
- exitCode = info.si_status;
- crashed = info.si_code != CLD_EXITED;
+ exitCode = info.status;
+ crashed = info.code != CLD_EXITED;
delete deathNotifier;
deathNotifier = 0;
- qt_safe_close(forkfd);
+ EINTR_LOOP(ret, forkfd_close(forkfd));
forkfd = -1; // Child is dead, don't try to kill it anymore
#if defined QPROCESS_DEBUG