GLib.child_watch_add
Description: Reference for GLib.child_watch_add

### Function

# GLibchild_watch_add

since: 2.4

#### Declaration

    guint
    g_child_watch_add (
      GPid pid,
      GChildWatchFunc function,
      gpointer data
    )

#### Description

Sets a function to be called when the child indicated by `pid` exits, at a default priority, `G_PRIORITY_DEFAULT`.

If you obtain `pid` from `g_spawn_async()` or `g_spawn_async_with_pipes()` you will need to pass `G_SPAWN_DO_NOT_REAP_CHILD` as flag to the spawn function for the child watching to work.

Note that on platforms where `GPid` must be explicitly closed (see g_spawn_close_pid()) `pid` must not be closed while the source is still active. Typically, you will want to call `g_spawn_close_pid()` in the callback function for the source.

GLib supports only a single callback per process id. On POSIX platforms, the same restrictions mentioned for `g_child_watch_source_new()` apply to this function.

This internally creates a main loop source using `g_child_watch_source_new()` and attaches it to the main loop context using g_source_attach(). You can do these steps manually if you need greater control.

Available since: 2.4

This function is not directly available to language bindings.

The implementation of this method is provided by `g_child_watch_add_full()` in language bindings

#### Parameters

`pid`

  Type: `GPid`

  Process id to watch. On POSIX the positive pid of a child process. On Windows a handle for a process (which doesn’t have to be a child).

`function`

  Type: `GChildWatchFunc`

  Function to call.

`data`

  Type: `gpointer`

  Data to pass to `function`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

#### Return value

Type: `guint`

The ID (greater than 0) of the event source.