IProcess
An interface to create new child processes, kill processes and inspect the existance of a process.
Each static function has a class IInstanceLog * const log pointer, which is used for instance related
logs dependent of the log flag LOG_PROCESS.
File information
File | common/interface/process.h
|
Classes |
IProcess
|
Classes
IProcess
class IProcess {
public:
static int Spawn(const char *filename, int argc, char ** argv, class IInstanceLog * const log);
static int Kill(int pid, int signalNr, class IInstanceLog * const log);
static bool ProcessExist(int pid, class IInstanceLog * const log);
static int GetOwnPID(class IInstanceLog * const log);
static int GetParentPID(class IInstanceLog * const log);
static bool SetProcessGroupID(int pid, int pgid, class IInstanceLog * const log);
static void GetOwnName(char * buffer, size_t len, class IInstanceLog * const log);
static int System(class IInstanceLog * const log, const char * command, ...);
static bool Exec(class IInstanceLog * const log, const char * command, char * stdOut, size_t stdOutLen);
};
Public static functions
int Spawn(const char *filename, int argc, char ** argv, class IInstanceLog * const log)
Spawns a new child process based on the filename and the set of arguments determined by char **argv.
Parameters
const char * filename | The actual command which will be executed. |
int argc | The number of arguments. |
char ** argv | An array of char * arguments. Note that the first argument is the process filename itself again. |
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
Return value
On success it returns the process id of the spawned process, otherwise 0 is returned.
Remarks
STDOUT and STDERR are redirected to /dev/null with this method. If you want to have the output, you should use the ICommand interface instead.
You may implement the IChildExitedHandler interface to get notified if your spawned process exited.
Example
char* argv[3];
argv[0] = (char*)"/path/to/binary";
argv[1] = (char*)"-arg1";
argv[2] = (char*)"valueOfArg1";
int pid = IProcess::Spawn(argv[0], 3, argv, logInstance);
int Kill(int pid, int signalNr, class IInstanceLog * const log)
Sends the specified kill code to a process.
Parameters
int pid | The process PID. |
int signalNr | The signal number, e.g. 9 (SIG_KILL). |
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
Return value
If the kill is successful 1 is returned; otherwise 0 is returned (int).
bool ProcessExist(int pid, class IInstanceLog * const log)
Checks if a process still exists or not.
Parameters
int pid | The process PID. |
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
Return value
true if the process still exists, otherwise false.
int GetOwnPID(class IInstanceLog * const log)
Returns the own process ID.
Parameters
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
Return value
The process ID (int).
int GetParentPID(class IInstanceLog * const log)
Returns the parent process ID from the own process.
Parameters
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
Return value
The parent process ID (int).
bool SetProcessGroupID(int pid, int pgid, class IInstanceLog * const log)
Sets the process group ID of the specified process.
Parameters
int pid | The process PID. |
int pgid | The group ID. |
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
Return value
Returns true on success, otherwise false.
void GetOwnName(char * buffer, size_t len, class IInstanceLog * const log)
Writes the own process name to the given buffer.
Parameters
char * buffer | The buffer in which the name will be written. |
size_t len | The size of the buffer. |
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
int System(class IInstanceLog * const log, const char * command, ...)
Makes use of the standard system function and runs the specified command.
Parameters
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
const char * command | The command to run (e.g. "date -s \"1970-01-02 01:01:00\""). |
... | Parameters which are used inside command (e.g. %s etc.). The internally used buffer length is 1024 bytes! |
Return value
The exit code of the system call (int).
bool Exec(class IInstanceLog * const log, const char * command, char * stdOut, size_t stdOutLen)
Makes use of the standard system function and runs the specified command.
Parameters
class IInstanceLog * const log | The IInstanceLog instance which is to be used. |
const char * command | The command to run (e.g. "date -s \"1970-01-02 01:01:00\""). |
char * stdOut | Buffer to save std out. The buffer will be NULL terminated. |
size_t stdOutLen | Size of the buffer. |
Return value
Bool.