summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qprocess.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io/qprocess.cpp')
-rw-r--r--src/corelib/io/qprocess.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp
index d6a9f2e2bd..060f503aa5 100644
--- a/src/corelib/io/qprocess.cpp
+++ b/src/corelib/io/qprocess.cpp
@@ -528,6 +528,11 @@ void QProcessPrivate::Channel::clear()
is not supported. The working directory will always be the private
directory of the running process.
+ \note On QNX, setting the working directory may cause all
+ application threads, with the exception of the QProcess caller
+ thread, to temporarily freeze, owing to a limitation in
+ the operating system.
+
\section1 Synchronous Process API
QProcess provides a set of functions which allow it to be used
@@ -751,16 +756,12 @@ QProcessPrivate::QProcessPrivate()
sequenceNumber = 0;
exitCode = 0;
exitStatus = QProcess::NormalExit;
-#ifndef Q_OS_QNX
startupSocketNotifier = 0;
-#endif
deathNotifier = 0;
notifier = 0;
pipeWriter = 0;
-#ifndef Q_OS_QNX
childStartedPipe[0] = INVALID_Q_PIPE;
childStartedPipe[1] = INVALID_Q_PIPE;
-#endif
deathPipe[0] = INVALID_Q_PIPE;
deathPipe[1] = INVALID_Q_PIPE;
exitCode = 0;
@@ -829,13 +830,11 @@ void QProcessPrivate::cleanup()
qDeleteInEventHandler(stdinChannel.notifier);
stdinChannel.notifier = 0;
}
-#ifndef Q_OS_QNX
if (startupSocketNotifier) {
startupSocketNotifier->setEnabled(false);
qDeleteInEventHandler(startupSocketNotifier);
startupSocketNotifier = 0;
}
-#endif
if (deathNotifier) {
deathNotifier->setEnabled(false);
qDeleteInEventHandler(deathNotifier);
@@ -848,9 +847,7 @@ void QProcessPrivate::cleanup()
destroyPipe(stdoutChannel.pipe);
destroyPipe(stderrChannel.pipe);
destroyPipe(stdinChannel.pipe);
-#ifndef Q_OS_QNX
destroyPipe(childStartedPipe);
-#endif
destroyPipe(deathPipe);
#ifdef Q_OS_UNIX
serial = 0;
@@ -1085,10 +1082,8 @@ bool QProcessPrivate::_q_startupNotification()
qDebug("QProcessPrivate::startupNotification()");
#endif
-#ifndef Q_OS_QNX
if (startupSocketNotifier)
startupSocketNotifier->setEnabled(false);
-#endif
if (processStarted()) {
q->setProcessState(QProcess::Running);
emit q->started();
@@ -1467,6 +1462,9 @@ QString QProcess::workingDirectory() const
the private directory of the process is considered its working
directory.
+ \note On QNX, this may cause all application threads to
+ temporarily freeze.
+
\sa workingDirectory(), start()
*/
void QProcess::setWorkingDirectory(const QString &dir)
@@ -1789,7 +1787,7 @@ void QProcess::setProcessState(ProcessState state)
exit().
\warning This function is called by QProcess on Unix and Mac OS X
- only. On Windows, it is not called.
+ only. On Windows and QNX, it is not called.
*/
void QProcess::setupChildProcess()
{
@@ -2197,6 +2195,9 @@ int QProcess::execute(const QString &program)
The process will be started in the directory \a workingDirectory.
+ \note On QNX, this may cause all application threads to
+ temporarily freeze.
+
If the function is successful then *\a pid is set to the process
identifier of the started process.
*/