libassa  3.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Attributes
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 58 of file Fork.h.


Constructor & Destructor Documentation

Definition at line 61 of file Fork.h.

        : 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().

{ 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().

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

{
    trace_with_mask("ChildStatusHandler::handle_signal", FORK);
    DL((FORK, "Caught signal # %d\n", signum_));

    if (signum_ == SIGCHLD) {
        int status;
        m_caught = true;
        pid_t ret = ::wait (&status);
        DL((FORK,"wait() = %d (PID)\n", ret));

        if (ret > 0 && (WIFEXITED (status))) {
            m_exit_status = WEXITSTATUS (status);
        }
        else {
            m_exit_status = ret;
        }
    }

    DL((FORK,"child exit_status = %d\n", m_exit_status));
    return 0;
}

Member Data Documentation

Definition at line 77 of file Fork.h.

Referenced by caught(), and handle_signal().

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:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines