wibble  0.1.28
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
wibble::sys::ChildProcess Class Reference

Fork a child process. More...

#include <childprocess.h>

Inheritance diagram for wibble::sys::ChildProcess:
Inheritance graph
[legend]

Public Member Functions

 ChildProcess ()
virtual ~ChildProcess ()
pid_t fork ()
 For a subprocess to run proc.
pid_t forkAndRedirect (int *stdinfd=0, int *stdoutfd=0, int *stderrfd=0)
 Fork a subprocess to run proc.
pid_t pid () const
 Get the pid of the child process or (pid_t)-1 if no child is running.
int wait ()
 Wait for the child to finish, returing its exit status.
bool running ()
int exitStatus ()
void waitForSuccess ()
int wait (struct rusage *ru)
 Wait for the child to finish, returing its exit status and storing resource usage informations in `ru'.
void kill (int signal)
 Send the given signal to the process.

Protected Member Functions

void waitError ()
virtual int main ()=0
 Main function to be called in the child process after it has forked.

Protected Attributes

pid_t _pid
int m_status

Detailed Description

Fork a child process.

Constructor & Destructor Documentation

wibble::sys::ChildProcess::ChildProcess ( )
inline
virtual wibble::sys::ChildProcess::~ChildProcess ( )
inlinevirtual

Member Function Documentation

int wibble::sys::ChildProcess::exitStatus ( )
pid_t wibble::sys::ChildProcess::fork ( )

For a subprocess to run proc.

pid_t wibble::sys::ChildProcess::forkAndRedirect ( int *  stdinfd = 0,
int *  stdoutfd = 0,
int *  stderrfd = 0 
)

Fork a subprocess to run proc.

If one of the std*fd variables is non-null, create a pipe connected to the corresponding file descriptor of the child process and store the parent end in the std*fd variable.

void wibble::sys::ChildProcess::kill ( int  signal)

Send the given signal to the process.

virtual int wibble::sys::ChildProcess::main ( )
protectedpure virtual

Main function to be called in the child process after it has forked.

Implemented in wibble::sys::Exec.

pid_t wibble::sys::ChildProcess::pid ( ) const
inline

Get the pid of the child process or (pid_t)-1 if no child is running.

Note: while ChildProcess::kill() has a safeguard against killing pid -1, if you are going to run ::kill on the output of pid() make sure to check what is the semanthics of kill() when pid is -1.

References _pid.

bool wibble::sys::ChildProcess::running ( )
int wibble::sys::ChildProcess::wait ( )

Wait for the child to finish, returing its exit status.

Return -1 if no child is running. TODO: gracefully handle the EINTR error code

int wibble::sys::ChildProcess::wait ( struct rusage *  ru)

Wait for the child to finish, returing its exit status and storing resource usage informations in `ru'.

Return -1 if no child is running. TODO: gracefully handle the EINTR error code

void wibble::sys::ChildProcess::waitError ( )
protected
void wibble::sys::ChildProcess::waitForSuccess ( )

Member Data Documentation

pid_t wibble::sys::ChildProcess::_pid
protected

Referenced by pid().

int wibble::sys::ChildProcess::m_status
protected

The documentation for this class was generated from the following file: