PIP 5.5.3
Platform-Independent Primitives
Public Member Functions | Static Public Member Functions | List of all members
PIProcess Class Reference

Class for managing external processes. More...

#include <piprocess.h>

Inheritance diagram for PIProcess:
Inheritance graph
[legend]

Public Member Functions

 PIProcess ()
 Construct empty PIProcess.
 
int exitCode () const
 Returns last attached execution exit code.
 
int pID () const
 Returns current attached execution process ID.
 
PIString workingDirectory () const
 Returns current attached execution working directory or empty string if it wasn`t set.
 
void setWorkingDirectory (const PIString &path)
 Set attached execution working directory.
 
void resetWorkingDirectory ()
 Rseet attached execution working directory, application working dir will be used.
 
PIByteArray readOutput ()
 Returns all attached execution output stream.
 
PIByteArray readError ()
 Returns all attached execution error stream.
 
bool writeInput (const PIByteArray &data)
 Write data to attached execution input stream.
 
void closeInput ()
 Close attached execution input stream and send EOF.
 
void enableWriteStdIn (bool on=true)
 Enable or disable writing to process stdin.
 
void enableReadStdOut (bool on=true)
 Enable or disable reading from process stdout.
 
void enableReadStdErr (bool on=true)
 Enable or disable reading from process stderr.
 
PIStringList environment ()
 Returns current attached execution environment.
 
void clearEnvironment ()
 Clear current attached execution environment. Call before exec()
 
void removeEnvironmentVariable (const PIString &variable)
 Remove variable "variable" from current attached execution environment. Call before exec()
 
void setEnvironmentVariable (const PIString &variable, const PIString &value)
 Set variable "variable" to "value" in current attached execution environment. Call before exec()
 
void exec (const PIString &program, const PIString &arg)
 Start attached execution "program" with one argument "arg".
 
bool isExecFinished () const
 Check if attached execution has finished.
 
bool isExecStarted () const
 Check if attached execution has started.
 
- Public Member Functions inherited from PIThread
 PIThread (void *data, ThreadFunc func, bool startNow=false, PISystemTime loop_delay={})
 Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
 
 PIThread (std::function< void()> func, bool startNow=false, PISystemTime loop_delay={})
 Contructs thread with external function "func" and main loop delay "loop_delay".
 
 PIThread (bool startNow=false, PISystemTime loop_delay={})
 Contructs thread with main loop delay "loop_delay".
 
bool start ()
 Start thread.
 
bool start (PISystemTime loop_delay)
 Start thread.
 
bool start (ThreadFunc func)
 Start thread.
 
bool start (ThreadFunc func, PISystemTime loop_delay)
 Start thread.
 
bool start (std::function< void()> func)
 Start thread.
 
bool start (std::function< void()> func, PISystemTime loop_delay)
 Start thread.
 
bool startOnce ()
 Start thread without internal loop. More...
 
bool startOnce (ThreadFunc func)
 Start thread without internal loop. More...
 
bool startOnce (std::function< void()> func)
 Start thread without internal loop.
 
bool stopAndWait (PISystemTime timeout={})
 Stop thread and wait for finish. Returns false if timeout expired.
 
void setData (void *d)
 Set common data passed to external function.
 
void setSlot (ThreadFunc func)
 Set external function that will be executed after every run()
 
void setSlot (std::function< void()> func)
 Set external function that will be executed after every run()
 
void setPriority (PIThread::Priority prior)
 Set thread priority.
 
void * data () const
 Returns common data passed to external function.
 
PIThread::Priority priority () const
 Return thread priority.
 
bool isRunning () const
 Return if thread is running.
 
bool isStopping () const
 Return if thread is stopping.
 
bool waitForStart (PISystemTime timeout={})
 Wait for thread start.
 
bool waitForStart (int timeout_msecs) DEPRECATEDM("use waitForStart(PISystemTime)")
 
bool waitForFinish (PISystemTime timeout={})
 Wait for thread finish. Returns false if timeout expired.
 
bool waitForFinish (int timeout_msecs) DEPRECATEDM("use waitForFinish(PISystemTime)")
 
void needLockRun (bool need)
 Set necessity of lock every run() with internal mutex.
 
PIMutexmutex () const
 Returns internal mutex.
 
llong tid () const
 Returns thread ID.
 
void stop ()
 Stop thread. More...
 
void terminate ()
 Strongly stop thread. More...
 
void lock () const
 Lock internal mutex.
 
void unlock () const
 Unlock internal mutex.
 
void started ()
 Raise on thread start.
 
void stopped ()
 Raise on thread stop.
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
virtual const char * parentClassName () const
 Returns parent class name.
 
bool debug () const
 Return if piCoutObj of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object piCoutObj active.
 
PIVariant property (const char *name) const
 Returns property with name "name".
 
void setProperty (const char *name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const char *name) const
 Returns if property with name "name" exists.
 
PIStringList scopeList () const
 Returns subclass scope of this object (including this class name)
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Disconnect object from all connections with event name "sig", connected to destination object "dest" and handler "ev_h".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Disconnect object from all connections with event name "sig", connected to destination object "dest".
 
void piDisconnect (const PIString &sig)
 Disconnect object from all connections with event name "sig".
 
bool isPIObject () const
 Returns if this is valid PIObject (check signature)
 
template<typename T >
bool isTypeOf () const
 Returns if this is valid PIObject subclass "T" (check signature and classname)
 
template<typename T >
T * cast () const
 Returns cast to T if this is valid subclass "T" (check by isTypeOf()) or "nullptr".
 
void callQueuedEvents ()
 Execute all posted events from CONNECTU_QUEUED connections.
 
bool maybeCallQueuedEvents ()
 Check if any CONNECTU_QUEUED connections to this object and execute them. More...
 
void deleteLater ()
 Mark object to delete. More...
 
void deleted (PIObject *o)
 Raise before object delete. More...
 

Static Public Member Functions

static void execIndependent (const PIString &program)
 Start detached execution "program" without arguments.
 
static void execIndependent (const PIString &program, const PIString &arg)
 Start detached execution "program" with one argument "arg".
 
static void execIndependent (const PIString &program, const PIStringList &args)
 Start detached execution "program" with arguments "args".
 
static PIStringList currentEnvironment ()
 Returns application environment.
 
static int currentPID ()
 Returns application process ID.
 
static PIString getEnvironmentVariable (const PIString &variable)
 Returns variable "variable" value from application environment.
 
- Static Public Member Functions inherited from PIThread
static void runOnce (PIObject *object, const char *handler, const PIString &name=PIString())
 Call event handler "handler" of object "object" in separate thread. More...
 
static void runOnce (std::function< void()> func, const PIString &name=PIString())
 Call lambda expression "func" in separate thread. More...
 
- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Disconnect object "src" from all connections with event name "sig", connected to destination object "dest" and handler "ev_h".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Disconnect object "src" from all connections with event name "sig", connected to destination object "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
static bool isPIObject (const PIObject *o)
 Returns if "o" is valid PIObject (check signature)
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Returns if "o" is valid PIObject subclass "T" (check signature and classname)
 

Handlers

void exec (const PIString &program)
 Start attached execution "program" without arguments.
 
void exec (const PIString &program, const PIStringList &args_)
 Start attached execution "program" with arguments "args".
 
void terminate ()
 Immediately terminate attached execution.
 
bool waitForFinish ()
 Wait for attached execution finish maximum for 60 seconds.
 
bool waitForFinish (PISystemTime timeout)
 Wait for attached execution finish maximum for "timeout_".
 

Events

void execStarted (PIString program)
 Raise on attached execution start.
 
void execFinished (PIString program, int exit_code)
 Raise on attached execution finish.
 

Additional Inherited Members

- Public Types inherited from PIThread
enum  Priority {
  piLowerst , piLow , piNormal , piHigh ,
  piHighest
}
 Priority of thread. More...
 
- Protected Member Functions inherited from PIThread
virtual void begin ()
 Function executed once at the start of thread.
 
virtual void run ()
 Function executed at every "loop_delay" msecs until thread was stopped.
 
virtual void end ()
 Function executed once at the end of thread.
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const char *name)
 Virtual function executes after property with name "name" has been changed.
 

Detailed Description

Class for managing external processes.

This class able to start external executables, watch for them, grab output and exit code.

Synopsis

External executable can be started with control or fully independent from application.
Start with control allow you to wait for finish, grab output and terminate it at any time.
You can change working directory and environment of executable.

Usage

The PIProcess class provides functionality to create, control and interact with external processes. It allows both attached execution (with full control over input/output streams) and detached execution.

Key features:

This class inherits from PIThread and provides event-based notifications for process lifecycle events.