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); diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp index 37f224ff28..f5aa2c2412 100644 --- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp +++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp @@ -943,7 +943,7 @@ void tst_QProcess::hardExit() void tst_QProcess::softExit() { QProcess proc; - + QCOMPARE(proc.processId(), 0); proc.start("testSoftExit/testSoftExit"); QVERIFY(proc.waitForStarted(10000)); @@ -951,6 +951,8 @@ void tst_QProcess::softExit() QVERIFY(proc.waitForReadyRead(10000)); #endif + QVERIFY(proc.processId() > 0); + proc.terminate(); QVERIFY(proc.waitForFinished(10000));