ASSA::ChildStatusHandler Class Reference

A helper class of Fork. More...

#include <Fork.h>

Inheritance diagram for ASSA::ChildStatusHandler:

Inheritance graph
[legend]
Collaboration diagram for ASSA::ChildStatusHandler:

Collaboration graph
[legend]
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 58 of file Fork.h.


Constructor & Destructor Documentation

ASSA::ChildStatusHandler::ChildStatusHandler  )  [inline]
 

Definition at line 61 of file Fork.h.

00062         : 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 73 of file Fork.h.

References m_caught.

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

00073 { 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 69 of file Fork.h.

References m_exit_status.

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

00069 { 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 135 of file Fork.cpp.

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

00136 {
00137     trace_with_mask("ChildStatusHandler::handle_signal", FORK);
00138     DL((FORK, "Caught signal # %d\n", signum_));
00139 
00140     if (signum_ == SIGCHLD) {
00141         int status;
00142         m_caught = true;
00143         pid_t ret = ::wait (&status);
00144         DL((FORK,"wait() = %d (PID)\n", ret));
00145 
00146         if (ret > 0 && (WIFEXITED (status))) {
00147             m_exit_status = WEXITSTATUS (status);
00148         }
00149         else {
00150             m_exit_status = ret;
00151         }
00152     }
00153 
00154     DL((FORK,"child exit_status = %d\n", m_exit_status));
00155     return 0;
00156 }


Member Data Documentation

bool ASSA::ChildStatusHandler::m_caught [private]
 

Definition at line 77 of file Fork.h.

Referenced by caught(), and handle_signal().

int ASSA::ChildStatusHandler::m_exit_status [private]
 

Definition at line 76 of file Fork.h.

Referenced by exit_status(), and handle_signal().


The documentation for this class was generated from the following files:
Generated on Sun Aug 13 15:08:19 2006 for libassa by  doxygen 1.4.6