# VteReaper

## Name

VteReaper -- A singleton object which catches `SIGCHLD` signals and converts them into GObject-style "child-exited" signals.

## Synopsis

    struct      VteReaper;
    VteReaper*  vte_reaper_get                  (void);

## Object Hierarchy

      GObject
       +----VteReaper

## Signal Prototypes

    "child-exited"
                void        user_function      (VteReaper *vtereaper,
                                                gint arg1,
                                                gint arg2,
                                                gpointer user_data);

## Description

Because an application may need to be notified when child processes exit, and because there is only one `SIGCHLD` handler, the VteTerminal widget relies on a VteReaper to watch for `SIGCHLD` notifications and retrieve the exit status of child processes which have exited.

## Details

### struct VteReaper

    struct VteReaper;

This should not be accessed directly.

### vte_reaper_get ()

    VteReaper*  vte_reaper_get                  (void);

Finds the address of the global VteReaper object, creating the object if necessary.

Returns : | the global VteReaper object, which should not be unreffed.

## Signals

### The "child-exited" signal

    void        user_function                  (VteReaper *vtereaper,
                                                gint arg1,
                                                gint arg2,
                                                gpointer user_data);

`vtereaper` : | the object which received the signal.
`arg1` : | the process ID of the exited child.
`arg2` : | the status of the exited child, as returned by waitpid.
`user_data` : | user data set when the signal handler was connected.