![]() |
PIP 5.5.3
Platform-Independent Primitives
|
Class for managing external processes. More...
#include <piprocess.h>

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. | |
| PIMutex & | mutex () 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 PIObject * | findByName (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 | |
| PIObject * | emitter () 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. | |
Related Functions inherited from PIObject | |
| #define | piCoutObj |
| Macro used for conditional (piDebug && PIObject::debug()) output to PICout(StdOut) for subclasses of PIObject. | |
| #define | piCerrObj |
| Macro used for conditional (piDebug && PIObject::debug()) output to PICout(StdErr) for subclasses of PIObject. | |
| #define | PIOBJECT(name) |
| You should use this macro after class declaration to use EVENT and EVENT_HANDLER and correct piCoutObj output. | |
| #define | PIOBJECT_SUBCLASS(name, parent) |
| You should use this macro after class declaration to use EVENT and EVENT_HANDLER of parent class, and scopeList() | |
| #define | EVENT_HANDLER0(ret, name) ret name() |
| Declare event handler with name "name" and return type "ret", ret name() | |
| #define | EVENT_HANDLER1(ret, name, type0, var0) ret name(type0 var0) |
| Declare event handler with name "name" and return type "ret", ret name(type0 var0) | |
| #define | EVENT_HANDLER2(ret, name, type0, var0, type1, var1) ret name(type0 var0, type1 var1) |
| Declare event handler with name "name" and return type "ret", ret name(type0 var0, type1 var1) | |
| #define | EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2) ret name(type0 var0, type1 var1, type2 var2) |
| Declare event handler with name "name" and return type "ret", ret name(type0 var0, type1 var1, type2 var2) | |
| #define | EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Declare event handler with name "name" and return type "ret", ret name(type0 var0, type1 var1, type2 var2, type3 var3) | |
| #define | EVENT_HANDLER EVENT_HANDLER0 |
| Synonym of EVENT_HANDLER0. | |
| #define | EVENT_VHANDLER0(ret, name) virtual ret name() |
| Declare virtual event handler with name "name" and return type "ret", virtual ret name() | |
| #define | EVENT_VHANDLER1(ret, name, type0, var0) virtual ret name(type0 var0) |
| Declare virtual event handler with name "name" and return type "ret", virtual ret name(type0 var0) | |
| #define | EVENT_VHANDLER2(ret, name, type0, var0, type1, var1) virtual ret name(type0 var0, type1 var1) |
| Declare virtual event handler with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1) | |
| #define | EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2) virtual ret name(type0 var0, type1 var1, type2 var2) |
| Declare virtual event handler with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1, type2 var2) | |
| #define | EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Declare virtual event handler with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1, type2 var2,
type3 var3) | |
| #define | EVENT_VHANDLER EVENT_VHANDLER0 |
| Synonym of EVENT_VHANDLER0. | |
| #define | EVENT0(name) void name(); |
| Declare event with name "name", void name();. | |
| #define | EVENT1(name, type0, var0) void name(type0 var0); |
| Declare event with name "name", void name(type0 var0);. | |
| #define | EVENT2(name, type0, var0, type1, var1) void name(type0 var0, type1 var1); |
| Declare event with name "name", void name(type0 var0, type1 var1);. | |
| #define | EVENT3(name, type0, var0, type1, var1, type2, var2) void name(type0 var0, type1 var1, type2 var2); |
| Declare event with name "name", void name(type0 var0, type1 var1, type2 var2);. | |
| #define | EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3) void name(type0 var0, type1 var1, type2 var2, type3 var3); |
| Declare event with name "name", void name(type0 var0, type1 var1, type2 var2, type3 var3);. | |
| #define | EVENT EVENT0 |
| Synonym of EVENT0. | |
| #define | CONNECTU(src, event, dest, handler) |
| Connect event "event" from object "src" to event handler or event "handler" of object "dest". More... | |
| #define | CONNECTU_QUEUED(src, event, dest, handler, performer) |
| Connect event "event" from object "src" to event handler or event "handler" of object "dest". More... | |
| #define | CONNECTL(src, event, functor) |
| Connect event "event" from object "src" to lambda-expression "functor". More... | |
| #define | CONNECT0(ret, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists. More... | |
| #define | CONNECT1(ret, type0, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists. More... | |
| #define | CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists. More... | |
| #define | CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists. More... | |
| #define | CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists. More... | |
| #define | CONNECT CONNECT0 |
| Synonym of CONNECT0. More... | |
| #define | WEAK_CONNECT0(ret, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists. More... | |
| #define | WEAK_CONNECT1(ret, type0, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists. More... | |
| #define | WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists. More... | |
| #define | WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists. More... | |
| #define | WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists. More... | |
| #define | WEAK_CONNECT WEAK_CONNECT0 |
| Synonym of WEAK_CONNECT0. More... | |
| #define | DISCONNECT0(ret, src, event, dest, handler) |
| piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" | |
| #define | DISCONNECT1(ret, type0, src, event, dest, handler) |
| piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" | |
| #define | DISCONNECT2(ret, type0, type1, src, event, dest, handler) |
| piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" | |
| #define | DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" | |
| #define | DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" | |
| #define | DISCONNECT DISCONNECT0 |
| Synonym of DISCONNECT0. | |
| #define | HANDLER(handler) |
| Returns pointer to events handler "handler". | |
Class for managing external processes.
This class able to start external executables, watch for them, grab output and exit code.
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.
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.