diff options
author | Christian Strømme <christian.stromme@digia.com> | 2014-01-21 14:54:27 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-14 00:34:25 +0100 |
commit | 2223cc8a2d91968951432f337fa4737cf792d514 (patch) | |
tree | 8a878ff4b0cb17421a005d61c13a74a3aaef972e /src/corelib/io | |
parent | 9dc7c92dcb17ef503df18270aa68eabb67623bae (diff) |
Add function to get the actual PID from QProcess
It was not possible to get the actual process ID (in a cross-platform
manner) from QProcess, as the user would need to handle the returned
typedef (Q_PID) differently on Unix and Windows.
On Unix Q_PID is the actual process ID, but on Windows it's a pointer
to a PROCESS_INFORMATION structure, which among other fields contains
the process ID. Instead of returning a pointer on Windows,
QProcess::processId() will return the actual process ID on both Windows
and Unix.
[ChangeLog][QtCore][QProcess] Added processId() to QProcess. This
function will, unlike pid(), return the actual process identifier on
both Window and Unix.
Task-number: QTBUG-26136
Change-Id: I853ab721297e2dd9cda006666144179a9e25b73d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io')
-rw-r--r-- | src/corelib/io/qprocess.cpp | 28 | ||||
-rw-r--r-- | src/corelib/io/qprocess.h | 1 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 483650afcb..3b78351809 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -1545,16 +1545,40 @@ void QProcess::setWorkingDirectory(const QString &dir) d->workingDirectory = dir; } + /*! + \deprecated + Use processId() instead. + Returns the native process identifier for the running process, if - available. If no process is currently running, 0 is returned. + available. If no process is currently running, \c 0 is returned. + + \note Unlike \l processId(), pid() returns an integer on Unix and a pointer on Windows. + + \sa Q_PID, processId() */ -Q_PID QProcess::pid() const +Q_PID QProcess::pid() const // ### Qt 6 remove or rename this method to processInformation() { Q_D(const QProcess); return d->pid; } +/*! + \since 5.3 + + Returns the native process identifier for the running process, if + available. If no process is currently running, \c 0 is returned. + */ +qint64 QProcess::processId() const +{ + Q_D(const QProcess); +#ifdef Q_OS_WIN + return d->pid ? d->pid->dwProcessId : 0; +#else + return d->pid; +#endif +} + /*! \reimp This function operates on the current read channel. diff --git a/src/corelib/io/qprocess.h b/src/corelib/io/qprocess.h index c0b3ab945e..6be267f15f 100644 --- a/src/corelib/io/qprocess.h +++ b/src/corelib/io/qprocess.h @@ -187,6 +187,7 @@ public: // #### Qt 5: Q_PID is a pointer on Windows and a value on Unix Q_PID pid() const; + qint64 processId() const; bool waitForStarted(int msecs = 30000); bool waitForReadyRead(int msecs = 30000); |