NAME
Process::SubProcess - Library to manage Sub Processes as Objects
DESCRIPTION
Process::SubProcess implements a Class to manage a Sub Process and read its Output and Errors
The Idea of this API is to launch Sub Processes and keep track of all Output on STDOUT, STDERR, the EXIT CODE and possible System Errors at Launch Time in an object oriented manner. This allows an easy aggregation and thus the creation of Sub Process Groups and Sub Process Pools for simultaneous execution of multiple Sub Processes while keeping the execution logs separated.
STATIC METHODS
- runSubProcess ( [ COMMAND | OPTIONS ] )
-
This creates adhoc an
Process::SubProcessObject and runs the command given as string.COMMAND- is a single scalar parameter will be interpreted as command to executed without any additional options.OPTIONS- are passed in a hash like fashion, using key and value pairs. Combining the command with additionalOPTIONSalso requires the hash keycommandto be set.
CONSTRUCTOR
- new ( [ CONFIGURATIONS ] )
-
This is the constructor for a new SubProcess.
Parameters:
CONFIGURATIONSare passed in a hash like fashion, using key and value pairs.
Administration Methods
- setArrProcess ( CONFIGURATIONS )
-
This Method will asign Values to physically Data Fields.
Parameters:
CONFIGURATIONS- is a list are passed in a hash like fashion, using key and value pairs.Recognized Configurations:
name- is a string that will be assigned as the process name. This is useful when there are several processes with the same command running and a more prettier readable name is desired.command- The command that has to be executed. It only can be set if the process is not running yettimeout- Time in seconds to wait for the process to finish. After this time the process will be terminatedcheck | read | readtimeout- Time in seconds to wait for the process output. If the process is expected to run longer it is useful to set it to avoid excessive checks. It is also important for multiple process execusions, because other processes will not be checked before the read has not timed out.See Method
setName()
- setName ( NAME )
-
This Method will asign a Name to the process.
The
NAMEof theProcess::SubProcessobject will reflect in the logs.This is useful when there are several processes with the same command running and a more prettier readable name is desired.
Parameters:
NAME- is a string that will be assigned as the process name.
- setCommand ( COMMAND )
-
This method sets the
COMMANDproperty as string that represents the command to be executed.It can only be set when the Sub Process is not running.
Parameters:
COMMAND- is a single scalar parameter that will be interpreted as command to executedSee Method
Launch()
- setReadTimeout ( TIMEOUT )
-
This method sets the
READTIMEOUTproperty as numeric value that represents the Time in seconds to wait for the process output. If the process is expected to run longer it is useful to set it to avoid excessive checks. It is also important for multiple process execusions, because other processes will not be checked before the read has not timed out. It can only be set when the Sub Process is not running.See Method
Launch()
- setTimeout ( TIMEOUT )
-
This method sets the
EXECUTIONTIMEOUTproperty as numeric value that represents the Time in seconds to wait for the process to finish. After this time the process will be terminated.The
EXECUTIONTIMEOUTproperty must be a positive numeric value. Setting it to a negative value-1will disable the Execution TimeoutSee Method
Launch()
- Launch ()
-
This method starts the process. It will create a Sub Process from the defined
COMMANDProperty.Per default this the process runs asynchronously. The Wait() method is used to monitor its execution and read its outputs
Returns: It returns
1when the process was launched correctly. otherwise it returns0.See Method
Check()
- Check ()
-
This method checks whether the process is finished and calls the
Read()method to read its output.Returns: It returns
1when the process is still running otherwise it returns0.See Method
Launch()
- Read ()
-
This method reads the
STDOUTandSTDERRoutputs from a running process which was started with theLaunch()method.When the process is not started yet it does not do anything.
If a
TIMEOUTis set through thesetReadTimeout()method the Manager Process keeps waiting for output until theTIMEOUTis fulfilled.See Method
Launch()
- Wait ()
-
This method calls the
Check()method continuously for a started process which was started with theLaunch()method until theCheck()method tells that the process is finished.If a
TIMEOUTis set through thesetTimeout()method the Manager Process will terminate the process after theTIMEOUTis fulfilled. When a process times out an Error Code of4will be set.Returns: It returns
1when the process has finished correctly. It returns0when the process had to be terminated.See Method
Check()See Method
Launch()
- Run ()
-
This method starts the process calling the
Launch()method and then calls theWait()method to wait until the process is finished.Returns: It returns
1when the process was started and finished correctly. It returns0when the process could not be started or had to be terminated.See Method
Launch()See Method
Wait()
- Terminate ()
-
This method sends a
TERMsignal to the process if it is running. And then checks the process with theCheck()method.It is used by the EXECUTIONTIMEOUT functionality to ensure that the process does not run longer than required.
See Method
Check()
- getProcessID
-
This Method will return the ProcessID of the process which was assigned by the system at launch time.
If the process was not launched yet it will return
-1.Returns: The ProcessID of the process assigned by the system.
See Method
Launch()
- getName
-
This Method will return the Name to the
Process::SubProcessobject if any was assigned with thesetName()method.Returns: The
NAMEof theProcess::SubProcessobject as string.See Method
setName()