KProcess

Search for usage in LXR

#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 Types inherited from QProcess
enum  ExitStatus
 
enum  InputChannelMode
 
enum  ProcessChannel
 
enum  ProcessChannelMode
 
enum  ProcessError
 
enum  ProcessState
 
enum  UnixProcessFlag
 
- Public Types inherited from QIODeviceBase
enum  OpenModeFlag
 

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
 
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 qint64 bytesToWrite () const const override
 
std::function< void()> childProcessModifier ()> childProcessModifier() const const
 
virtual void close () override
 
void closeReadChannel (ProcessChannel channel)
 
void closeWriteChannel ()
 
CreateProcessArgumentModifier createProcessArgumentsModifier () const const
 
QStringList environment () const const
 
QProcess::ProcessError error () const const
 
void errorOccurred (QProcess::ProcessError error)
 
int exitCode () const const
 
QProcess::ExitStatus exitStatus () const const
 
void finished (int exitCode, QProcess::ExitStatus exitStatus)
 
InputChannelMode inputChannelMode () const const
 
virtual bool isSequential () const const override
 
void kill ()
 
QString nativeArguments () const const
 
virtual bool open (OpenMode mode) override
 
ProcessChannelMode processChannelMode () const const
 
QProcessEnvironment processEnvironment () const const
 
qint64 processId () const const
 
QString program () const const
 
QByteArray readAllStandardError ()
 
QByteArray readAllStandardOutput ()
 
ProcessChannel readChannel () const const
 
void readyReadStandardError ()
 
void readyReadStandardOutput ()
 
void setArguments (const QStringList &arguments)
 
void setChildProcessModifier (const std::function< void()> &modifier)
 
void setCreateProcessArgumentsModifier (CreateProcessArgumentModifier modifier)
 
void setEnvironment (const QStringList &environment)
 
void setInputChannelMode (InputChannelMode mode)
 
void setNativeArguments (const QString &arguments)
 
void setProcessChannelMode (ProcessChannelMode mode)
 
void setProcessEnvironment (const QProcessEnvironment &environment)
 
void setProgram (const QString &program)
 
void setReadChannel (ProcessChannel channel)
 
void setStandardErrorFile (const QString &fileName, OpenMode mode)
 
void setStandardInputFile (const QString &fileName)
 
void setStandardOutputFile (const QString &fileName, OpenMode mode)
 
void setStandardOutputProcess (QProcess *destination)
 
void setUnixProcessParameters (const UnixProcessParameters &params)
 
void setUnixProcessParameters (UnixProcessFlags flagsOnly)
 
void setWorkingDirectory (const QString &dir)
 
void start (const QString &program, const QStringList &arguments, OpenMode mode)
 
void start (OpenMode mode)
 
void startCommand (const QString &command, OpenMode mode)
 
bool startDetached (qint64 *pid)
 
void started ()
 
QProcess::ProcessState state () const const
 
void stateChanged (QProcess::ProcessState newState)
 
void terminate ()
 
UnixProcessParameters unixProcessParameters () const const
 
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 ()
 
virtual bool atEnd () const const
 
virtual qint64 bytesAvailable () const const
 
void bytesWritten (qint64 bytes)
 
virtual bool canReadLine () const const
 
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
 
virtual bool open (QIODeviceBase::OpenMode mode)
 
QIODeviceBase::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 ()
 
qint64 readLine (char *data, qint64 maxSize)
 
QByteArray readLine (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 char *data, qint64 maxSize)
 
qint64 write (const QByteArray &data)
 
int writeChannelCount () const const
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
 
QBindable< QStringbindableObjectName ()
 
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 () const const
 
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 QRegularExpression &re, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (Qt::FindChildOptions options) const const
 
bool inherits (const char *className) const const
 
void installEventFilter (QObject *filterObj)
 
bool isQuickItemType () const const
 
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_EMIT Q_EMIT
 
 Q_ENUM (...)
 
 Q_ENUM_NS (...)
 
 Q_ENUMS (...)
 
 Q_FLAG (...)
 
 Q_FLAG_NS (...)
 
 Q_FLAGS (...)
 
 Q_GADGET Q_GADGET
 
 Q_GADGET_EXPORT (EXPORT_MACRO)
 
 Q_INTERFACES (...)
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_MOC_INCLUDE Q_MOC_INCLUDE
 
 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
 
qobject_cast (const QObject *object)
 
qobject_cast (QObject *object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 
void removeEventFilter (QObject *obj)
 
void setObjectName (const QString &name)
 
void setObjectName (QAnyStringView name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool setProperty (const char *name, QVariant &&value)
 
bool signalsBlocked () const const
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds interval, 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)
 
QString nullDevice ()
 
QStringList splitCommand (QStringView 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 *context, Functor functor, 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)
 
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, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 

Protected Member Functions

KCOREADDONS_NO_EXPORT KProcess (KProcessPrivate *d, QObject *parent)
 
- Protected Member Functions inherited from QProcess
virtual qint64 readData (char *data, qint64 maxlen) override
 
void setProcessState (ProcessState state)
 
- Protected Member Functions inherited from QIODevice
virtual qint64 readLineData (char *data, qint64 maxSize)
 
void setErrorString (const QString &str)
 
void setOpenMode (QIODeviceBase::OpenMode openMode)
 
virtual qint64 skipData (qint64 maxSize)
 
virtual qint64 writeData (const char *data, qint64 maxSize)=0
 
- 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

std::unique_ptr< KProcessPrivate > const d_ptr
 

Additional Inherited Members

- Properties inherited from QObject
 objectName
 
- Public Attributes inherited from QProcess
 CloseFileDescriptors
 
 Crashed
 
 CrashExit
 
typedef CreateProcessArgumentModifier
 
 FailedToStart
 
 ForwardedChannels
 
 ForwardedErrorChannel
 
 ForwardedInputChannel
 
 ForwardedOutputChannel
 
 IgnoreSigPipe
 
 ManagedInputChannel
 
 MergedChannels
 
 NormalExit
 
 NotRunning
 
 ReadError
 
 ResetSignalHandlers
 
 Running
 
 SeparateChannels
 
 StandardError
 
 StandardOutput
 
 Starting
 
 Timedout
 
typedef UnixProcessFlags
 
 UnknownError
 
 UseVFork
 
 WriteError
 
- Public Attributes inherited from QObject
typedef QObjectList
 
- Public Attributes inherited from QIODeviceBase
 Append
 
 ExistingOnly
 
 NewOnly
 
 NotOpen
 
typedef OpenMode
 
 ReadOnly
 
 ReadWrite
 
 Text
 
 Truncate
 
 Unbuffered
 
 WriteOnly
 

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 ossi@.nosp@m.kde..nosp@m.org

Definition at line 33 of file kprocess.h.

Member Enumeration Documentation

◆ OutputChannelMode

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 42 of file kprocess.h.

Constructor & Destructor Documentation

◆ KProcess() [1/2]

KProcess::KProcess ( QObject * parent = nullptr)
explicit

Constructor.

Definition at line 27 of file kprocess.cpp.

◆ ~KProcess()

KProcess::~KProcess ( )
overridedefault

Destructor.

◆ KProcess() [2/2]

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

Definition at line 34 of file kprocess.cpp.

Member Function Documentation

◆ clearEnvironment()

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 63 of file kprocess.cpp.

◆ clearProgram()

void KProcess::clearProgram ( )

Clear the program and command line argument list.

Definition at line 159 of file kprocess.cpp.

◆ execute() [1/3]

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 261 of file kprocess.cpp.

◆ execute() [2/3]

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 269 of file kprocess.cpp.

◆ execute() [3/3]

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();
void start()
Start the process.
Definition kprocess.cpp:242
int exitCode() const const
bool waitForFinished(int msecs)

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 249 of file kprocess.cpp.

◆ operator<<() [1/2]

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";
...
Child process invocation, monitoring and control.
Definition kprocess.h:34

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

Parameters
argthe argument to add
Returns
a reference to this KProcess

Definition at line 139 of file kprocess.cpp.

◆ operator<<() [2/2]

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 149 of file kprocess.cpp.

◆ outputChannelMode()

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 49 of file kprocess.cpp.

◆ program()

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 235 of file kprocess.cpp.

◆ setEnv()

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 68 of file kprocess.cpp.

◆ setNextOpenMode()

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 54 of file kprocess.cpp.

◆ setOutputChannelMode()

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 44 of file kprocess.cpp.

◆ setProgram() [1/2]

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 114 of file kprocess.cpp.

◆ setProgram() [2/2]

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 123 of file kprocess.cpp.

◆ setShellCommand()

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 176 of file kprocess.cpp.

◆ start()

void KProcess::start ( )

Start the process.

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

Definition at line 242 of file kprocess.cpp.

◆ startDetached() [1/3]

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 276 of file kprocess.cpp.

◆ startDetached() [2/3]

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 286 of file kprocess.cpp.

◆ startDetached() [3/3]

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 296 of file kprocess.cpp.

◆ unsetEnv()

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 92 of file kprocess.cpp.

Member Data Documentation

◆ d_ptr

std::unique_ptr<KProcessPrivate> const KProcess::d_ptr
protected

Definition at line 304 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-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:13:31 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.