wibble::sys::ChildProcess Class Reference

#include <childprocess.h>

Inheritance diagram for wibble::sys::ChildProcess:

Inheritance graph
[legend]

List of all members.


Detailed Description

Fork a child process.

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.
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

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

Protected Attributes

pid_t _pid

Constructor & Destructor Documentation

wibble::sys::ChildProcess::ChildProcess (  )  [inline]

virtual wibble::sys::ChildProcess::~ChildProcess (  )  [inline, virtual]


Member Function Documentation

virtual int wibble::sys::ChildProcess::main (  )  [protected, pure virtual]

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

Implemented in EndlessChild, TestChild, and wibble::sys::Exec.

Referenced by fork(), and forkAndRedirect().

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

For a subprocess to run proc.

References _pid, main(), and pid().

Referenced by forkAndRedirect(), and TestChildprocess::kill().

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.

References _pid, fork(), kill(), main(), and pid().

Referenced by TestChildprocess::output(), TestChildprocess::redirect(), and TestChildprocess::shellCommand().

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

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

References _pid.

Referenced by fork(), and forkAndRedirect().

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

References _pid.

Referenced by TestChildprocess::kill(), TestChildprocess::output(), TestChildprocess::redirect(), and TestChildprocess::shellCommand().

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

References _pid.

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

Send the given signal to the process.

References _pid.

Referenced by forkAndRedirect(), and TestChildprocess::kill().


Member Data Documentation

Referenced by fork(), forkAndRedirect(), kill(), pid(), and wait().


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

Generated on Tue Mar 11 11:34:56 2008 for wibble by  doxygen 1.5.5