KProcess

#include <KProcess>

Inheritance diagram for KProcess:

Public Types

enum  OutputChannelMode {
  SeparateChannels = QProcess::SeparateChannels, MergedChannels = QProcess::MergedChannels, ForwardedChannels = QProcess::ForwardedChannels, OnlyStdoutChannel = QProcess::ForwardedErrorChannel,
  OnlyStderrChannel = QProcess::ForwardedOutputChannel
}
 

Public Member Functions

 KProcess (QObject *parent=nullptr)
 
 ~KProcess () override
 
void clearEnvironment ()
 
void clearProgram ()
 
int execute (int msecs=-1)
 
KProcessoperator<< (const QString &arg)
 
KProcessoperator<< (const QStringList &args)
 
OutputChannelMode outputChannelMode () const
 
int pid () const
 
QStringList program () const
 
void setEnv (const QString &name, const QString &value, bool overwrite=true)
 
void setNextOpenMode (QIODevice::OpenMode mode)
 
void setOutputChannelMode (OutputChannelMode mode)
 
void setProgram (const QString &exe, const QStringList &args=QStringList())
 
void setProgram (const QStringList &argv)
 
void setShellCommand (const QString &cmd)
 
void start ()
 
int startDetached ()
 
void unsetEnv (const QString &name)
 
- Public Member Functions inherited from QProcess
 QProcess (QObject *parent)
 
QStringList arguments () const const
 
virtual bool atEnd () const const override
 
virtual qint64 bytesAvailable () const const override
 
virtual qint64 bytesToWrite () const const override
 
virtual bool canReadLine () const const override
 
virtual void close () override
 
void closeReadChannel (QProcess::ProcessChannel channel)
 
void closeWriteChannel ()
 
QProcess::CreateProcessArgumentModifier createProcessArgumentsModifier () const const
 
QStringList environment () const const
 
QProcess::ProcessError error () const const
 
void error (QProcess::ProcessError error)
 
void errorOccurred (QProcess::ProcessError error)
 
int exitCode () const const
 
QProcess::ExitStatus exitStatus () const const
 
void finished (int exitCode)
 
void finished (int exitCode, QProcess::ExitStatus exitStatus)
 
QProcess::InputChannelMode inputChannelMode () const const
 
virtual bool isSequential () const const override
 
void kill ()
 
QString nativeArguments () const const
 
virtual bool open (QIODevice::OpenMode mode) override
 
Q_PID pid () const const
 
QProcess::ProcessChannelMode processChannelMode () const const
 
QProcessEnvironment processEnvironment () const const
 
qint64 processId () const const
 
QString program () const const
 
 QT_NO_PROCESS_COMBINED_ARGUMENT_START QT_NO_PROCESS_COMBINED_ARGUMENT_START
 
QByteArray readAllStandardError ()
 
QByteArray readAllStandardOutput ()
 
QProcess::ProcessChannel readChannel () const const
 
QProcess::ProcessChannelMode readChannelMode () const const
 
void readyReadStandardError ()
 
void readyReadStandardOutput ()
 
void setArguments (const QStringList &arguments)
 
void setCreateProcessArgumentsModifier (QProcess::CreateProcessArgumentModifier modifier)
 
void setEnvironment (const QStringList &environment)
 
void setInputChannelMode (QProcess::InputChannelMode mode)
 
void setNativeArguments (const QString &arguments)
 
void setProcessChannelMode (QProcess::ProcessChannelMode mode)
 
void setProcessEnvironment (const QProcessEnvironment &environment)
 
void setProgram (const QString &program)
 
void setReadChannel (QProcess::ProcessChannel channel)
 
void setReadChannelMode (QProcess::ProcessChannelMode mode)
 
void setStandardErrorFile (const QString &fileName, QIODevice::OpenMode mode)
 
void setStandardInputFile (const QString &fileName)
 
void setStandardOutputFile (const QString &fileName, QIODevice::OpenMode mode)
 
void setStandardOutputProcess (QProcess *destination)
 
void setWorkingDirectory (const QString &dir)
 
void start (const QString &command, QIODevice::OpenMode mode)
 
void start (QIODevice::OpenMode mode)
 
void start (const QString &program, const QStringList &arguments, QIODevice::OpenMode mode)
 
bool startDetached (qint64 *pid)
 
void started ()
 
QProcess::ProcessState state () const const
 
void stateChanged (QProcess::ProcessState newState)
 
void terminate ()
 
virtual bool waitForBytesWritten (int msecs) override
 
bool waitForFinished (int msecs)
 
virtual bool waitForReadyRead (int msecs) override
 
bool waitForStarted (int msecs)
 
QString workingDirectory () const const
 
- Public Member Functions inherited from QIODevice
 QIODevice (QObject *parent)
 
void aboutToClose ()
 
void bytesWritten (qint64 bytes)
 
void channelBytesWritten (int channel, qint64 bytes)
 
void channelReadyRead (int channel)
 
void commitTransaction ()
 
int currentReadChannel () const const
 
int currentWriteChannel () const const
 
QString errorString () const const
 
bool getChar (char *c)
 
bool isOpen () const const
 
bool isReadable () const const
 
bool isTextModeEnabled () const const
 
bool isTransactionStarted () const const
 
bool isWritable () const const
 
QIODevice::OpenMode openMode () const const
 
qint64 peek (char *data, qint64 maxSize)
 
QByteArray peek (qint64 maxSize)
 
virtual qint64 pos () const const
 
bool putChar (char c)
 
qint64 read (char *data, qint64 maxSize)
 
QByteArray read (qint64 maxSize)
 
QByteArray readAll ()
 
int readChannelCount () const const
 
void readChannelFinished ()
 
QByteArray readLine (qint64 maxSize)
 
qint64 readLine (char *data, qint64 maxSize)
 
void readyRead ()
 
virtual bool reset ()
 
void rollbackTransaction ()
 
virtual bool seek (qint64 pos)
 
void setCurrentReadChannel (int channel)
 
void setCurrentWriteChannel (int channel)
 
void setTextModeEnabled (bool enabled)
 
virtual qint64 size () const const
 
qint64 skip (qint64 maxSize)
 
void startTransaction ()
 
void ungetChar (char c)
 
qint64 write (const char *data)
 
qint64 write (const QByteArray &byteArray)
 
qint64 write (const char *data, qint64 maxSize)
 
int writeChannelCount () const const
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
 
bool blockSignals (bool block)
 
const QObjectListchildren () const const
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
void deleteLater ()
 
void destroyed (QObject *obj)
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectInfo ()
 
void dumpObjectInfo () const const
 
void dumpObjectTree ()
 
void dumpObjectTree () const const
 
QList< QByteArraydynamicPropertyNames () const const
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
bool inherits (const char *className) const const
 
void installEventFilter (QObject *filterObj)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
void killTimer (int id)
 
virtual const QMetaObjectmetaObject () const const
 
void moveToThread (QThread *targetThread)
 
QString objectName () const const
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
QVariant property (const char *name) const const
 
 Q_CLASSINFO (Name, Value)
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_EMIT Q_EMIT
 
 Q_ENUM (...)
 
 Q_ENUM_NS (...)
 
 Q_ENUMS (...)
 
 Q_FLAG (...)
 
 Q_FLAG_NS (...)
 
 Q_FLAGS (...)
 
 Q_GADGET Q_GADGET
 
 Q_INTERFACES (...)
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_OBJECT Q_OBJECT
 
 Q_PROPERTY (...)
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SLOT Q_SLOT
 
 Q_SLOTS Q_SLOTS
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
qobject_cast (QObject *object)
 
qobject_cast (const QObject *object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 
void removeEventFilter (QObject *obj)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool signalsBlocked () const const
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
QThreadthread () const const
 

Static Public Member Functions

static int execute (const QString &exe, const QStringList &args=QStringList(), int msecs=-1)
 
static int execute (const QStringList &argv, int msecs=-1)
 
static int startDetached (const QString &exe, const QStringList &args=QStringList())
 
static int startDetached (const QStringList &argv)
 
- Static Public Member Functions inherited from QProcess
int execute (const QString &program, const QStringList &arguments)
 
int execute (const QString &command)
 
QString nullDevice ()
 
bool startDetached (const QString &command)
 
bool startDetached (const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid)
 
QStringList systemEnvironment ()
 
- Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 

Protected Member Functions

 KProcess (KProcessPrivate *d, QObject *parent)
 
- Protected Member Functions inherited from QProcess
virtual qint64 readData (char *data, qint64 maxlen) override
 
void setProcessState (QProcess::ProcessState state)
 
virtual void setupChildProcess ()
 
virtual qint64 writeData (const char *data, qint64 len) override
 
- Protected Member Functions inherited from QIODevice
virtual qint64 readLineData (char *data, qint64 maxSize)
 
void setErrorString (const QString &str)
 
void setOpenMode (QIODevice::OpenMode openMode)
 
- Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
int receivers (const char *signal) const const
 
QObjectsender () const const
 
int senderSignalIndex () const const
 
virtual void timerEvent (QTimerEvent *event)
 

Protected Attributes

KProcessPrivate *const d_ptr
 

Additional Inherited Members

- Properties inherited from QObject
 objectName
 
- Public Attributes inherited from QProcess
typedef CreateProcessArgumentModifier
 
typedef Q_PID
 
- Public Attributes inherited from QIODevice
typedef OpenMode
 
- Public Attributes inherited from QObject
typedef QObjectList
 

Detailed Description

Child process invocation, monitoring and control.

This class extends QProcess by some useful functionality, overrides some defaults with saner values and wraps parts of the API into a more accessible one. Only use KProcess if you need the extra features, otherwise QProcess is the preferred way of spawning child processes.

Author
Oswald Buddenhagen [email protected][email protected]kde.[email protected]org

Definition at line 31 of file kprocess.h.

Member Enumeration Documentation

Modes in which the output channels can be opened.

Enumerator
SeparateChannels 

Standard output and standard error are handled by KProcess as separate channels.

MergedChannels 

Standard output and standard error are handled by KProcess as one channel.

ForwardedChannels 

Both standard output and standard error are forwarded to the parent process' respective channel.

OnlyStdoutChannel 

Only standard output is handled; standard error is forwarded.

OnlyStderrChannel 

Only standard error is handled; standard output is forwarded.

Definition at line 41 of file kprocess.h.

Constructor & Destructor Documentation

KProcess::KProcess ( QObject parent = nullptr)
explicit

Constructor.

Definition at line 25 of file kprocess.cpp.

KProcess::~KProcess ( )
override

Destructor.

Definition at line 40 of file kprocess.cpp.

KProcess::KProcess ( KProcessPrivate *  d,
QObject parent 
)
protected

Definition at line 32 of file kprocess.cpp.

Member Function Documentation

void KProcess::clearEnvironment ( )

Empties the process' environment.

Note that LD_LIBRARY_PATH/DYLD_LIBRARY_PATH is automatically added on *NIX.

This function must be called before starting the process.

Definition at line 64 of file kprocess.cpp.

void KProcess::clearProgram ( )

Clear the program and command line argument list.

Definition at line 157 of file kprocess.cpp.

int KProcess::execute ( int  msecs = -1)

Start the process, wait for it to finish, and return the exit code.

This method is roughly equivalent to the sequence:

return exitCode();

Unlike the other execute() variants this method is not static, so the process can be parametrized properly and talked to.

Parameters
msecstime to wait for process to exit before killing it
Returns
-2 if the process could not be started, -1 if it crashed, otherwise its exit code

Definition at line 252 of file kprocess.cpp.

int KProcess::execute ( const QString exe,
const QStringList args = QStringList(),
int  msecs = -1 
)
static

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
exethe program to execute
argsthe command line arguments for the program, one per list element
msecstime to wait for process to exit before killing it
Returns
-2 if the process could not be started, -1 if it crashed, otherwise its exit code

Definition at line 264 of file kprocess.cpp.

int KProcess::execute ( const QStringList argv,
int  msecs = -1 
)
static

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
argvthe program to execute and the command line arguments for the program, one per list element
msecstime to wait for process to exit before killing it
Returns
-2 if the process could not be started, -1 if it crashed, otherwise its exit code

Definition at line 272 of file kprocess.cpp.

KProcess & KProcess::operator<< ( const QString arg)

Append an element to the command line argument list for this process.

If no executable is set yet, it will be set instead.

For example, doing an "ls -l /usr/local/bin" can be achieved by:

p << "ls" << "-l" << "/usr/local/bin";
...

This function must be called before starting the process, obviously.

Parameters
argthe argument to add
Returns
a reference to this KProcess

Definition at line 133 of file kprocess.cpp.

KProcess & KProcess::operator<< ( const QStringList args)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
argsthe arguments to add
Returns
a reference to this KProcess

Definition at line 145 of file kprocess.cpp.

KProcess::OutputChannelMode KProcess::outputChannelMode ( ) const

Query how the output channels of the child process are handled.

Returns
the output channel handling mode

Definition at line 50 of file kprocess.cpp.

int KProcess::pid ( ) const

Obtain the process' ID as known to the system.

Unlike with QProcess::pid(), this is a real PID also on Windows.

This function can be called only while the process is running. It cannot be applied to detached processes.

Returns
the process ID

Definition at line 308 of file kprocess.cpp.

QStringList KProcess::program ( ) const

Obtain the currently set program and arguments.

Returns
a list, the first element being the program, the remaining ones being command line arguments to the program.

Definition at line 236 of file kprocess.cpp.

void KProcess::setEnv ( const QString name,
const QString value,
bool  overwrite = true 
)

Adds the variable name to the process' environment.

This function must be called before starting the process.

Parameters
namethe name of the environment variable
valuethe new value for the environment variable
overwriteif false and the environment variable is already set, the old value will be preserved

Definition at line 69 of file kprocess.cpp.

void KProcess::setNextOpenMode ( QIODevice::OpenMode  mode)

Set the QIODevice open mode the process will be opened in.

This function must be called before starting the process, obviously.

Parameters
modethe open mode. Note that this mode is automatically "reduced" according to the channel modes and redirections. The default is QIODevice::ReadWrite.

Definition at line 55 of file kprocess.cpp.

void KProcess::setOutputChannelMode ( OutputChannelMode  mode)

Set how to handle the output channels of the child process.

The default is ForwardedChannels, which is unlike in QProcess. Do not request more than you actually handle, as this output is simply lost otherwise.

This function must be called before starting the process.

Parameters
modethe output channel handling mode

Definition at line 45 of file kprocess.cpp.

void KProcess::setProgram ( const QString exe,
const QStringList args = QStringList() 
)

Set the program and the command line arguments.

This function must be called before starting the process, obviously.

Parameters
exethe program to execute
argsthe command line arguments for the program, one per list element

Definition at line 110 of file kprocess.cpp.

void KProcess::setProgram ( const QStringList argv)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
argvthe program to execute and the command line arguments for the program, one per list element

Definition at line 121 of file kprocess.cpp.

void KProcess::setShellCommand ( const QString cmd)

Set a command to execute through a shell (a POSIX sh on *NIX and cmd.exe on Windows).

Using this for anything but user-supplied commands is usually a bad idea, as the command's syntax depends on the platform. Redirections including pipes, etc. are better handled by the respective functions provided by QProcess.

If KProcess determines that the command does not really need a shell, it will transparently execute it without one for performance reasons.

This function must be called before starting the process, obviously.

Parameters
cmdthe command to execute through a shell. The caller must make sure that all filenames etc. are properly quoted when passed as argument. Failure to do so often results in serious security holes. See KShell::quoteArg().

Definition at line 168 of file kprocess.cpp.

void KProcess::start ( )

Start the process.

See also
QProcess::start(const QString &, const QStringList &, OpenMode)

Definition at line 245 of file kprocess.cpp.

int KProcess::startDetached ( )

Start the process and detach from it.

See QProcess::startDetached() for details.

Unlike the other startDetached() variants this method is not static, so the process can be parametrized properly.

Note
Currently, only the setProgram()/setShellCommand() and setWorkingDirectory() parametrizations are supported.

The KProcess object may be re-used immediately after calling this function.

Returns
the PID of the started process or 0 on error

Definition at line 279 of file kprocess.cpp.

int KProcess::startDetached ( const QString exe,
const QStringList args = QStringList() 
)
static

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
exethe program to start
argsthe command line arguments for the program, one per list element
Returns
the PID of the started process or 0 on error

Definition at line 291 of file kprocess.cpp.

int KProcess::startDetached ( const QStringList argv)
static

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
argvthe program to start and the command line arguments for the program, one per list element
Returns
the PID of the started process or 0 on error

Definition at line 301 of file kprocess.cpp.

void KProcess::unsetEnv ( const QString name)

Removes the variable name from the process' environment.

This function must be called before starting the process.

Parameters
namethe name of the environment variable

Definition at line 90 of file kprocess.cpp.

Member Data Documentation

KProcessPrivate* const KProcess::d_ptr
protected

Definition at line 315 of file kprocess.h.


The documentation for this class was generated from the following files:
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Sat Jun 6 2020 22:53:01 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.