ASSA::ChildStatusHandler Class Reference

A helper class of Fork. More...

#include <Fork.h>

Inheritance diagram for ASSA::ChildStatusHandler:

ASSA::EventHandler List of all members.

Public Member Functions

 ChildStatusHandler ()
int handle_signal (int signum_)
 Signal handler callback.
int exit_status () const
bool caught () const

Private Attributes

int m_exit_status
bool m_caught

Detailed Description

A helper class of Fork.

Definition at line 55 of file Fork.h.


Constructor & Destructor Documentation

ASSA::ChildStatusHandler::ChildStatusHandler  )  [inline]
 

Definition at line 58 of file Fork.h.

00059         : m_exit_status (-1), m_caught (false) { /* no-op */ }


Member Function Documentation

bool ASSA::ChildStatusHandler::caught  )  const [inline]
 

Returns:
true if the signal has been caught; false otherwise

Definition at line 70 of file Fork.h.

References m_caught.

Referenced by ASSA::Fork::Fork().

00070 { return m_caught; }

int ASSA::ChildStatusHandler::exit_status  )  const [inline]
 

Returns:
-1 if failed on wait(); otherwise an exit status of the child process as returned by either RETURN or EXIT

Definition at line 66 of file Fork.h.

References m_exit_status.

Referenced by ASSA::Fork::get_exit_status().

00066 { return m_exit_status; }

int ChildStatusHandler::handle_signal int  signum_  )  [virtual]
 

Signal handler callback.

Returns:
0 on success, -1 on error

Reimplemented from ASSA::EventHandler.

Definition at line 36 of file Fork.cpp.

References DL, ASSA::FORK, m_caught, m_exit_status, and trace_with_mask.

00037 {
00038     trace_with_mask("ChildStatusHandler::handle_signal", FORK);
00039     DL((FORK, "Caught signal # %d\n", signum_));
00040 
00041     if (signum_ == SIGCHLD) {
00042         int status;
00043         m_caught = true;
00044         pid_t ret = ::wait (&status);
00045         DL((FORK,"wait() = %d (PID)\n", ret));
00046 
00047         if (ret > 0 && (WIFEXITED (status))) {
00048             m_exit_status = WEXITSTATUS (status);
00049         }
00050         else {
00051             m_exit_status = ret;
00052         }
00053     }
00054     DL((FORK,"child exit_status = %d\n", m_exit_status));
00055     return 0;
00056 }


Member Data Documentation

bool ASSA::ChildStatusHandler::m_caught [private]
 

Definition at line 74 of file Fork.h.

Referenced by caught(), and handle_signal().

int ASSA::ChildStatusHandler::m_exit_status [private]
 

Definition at line 73 of file Fork.h.

Referenced by exit_status(), and handle_signal().


The documentation for this class was generated from the following files:
Generated on Mon Dec 19 15:55:16 2005 for libassa by  doxygen 1.4.5