g_child_watch_add_full (
  gint priority,
  GPid pid,
  GChildWatchFunc function,
  gpointer data,
  GDestroyNotify notify


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

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.

In many programs, you will want to call g_spawn_check_wait_status() in the callback to determine whether or not the child exited successfully.

Also, 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 should invoke 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 renamed to g_child_watch_add() in language bindings


priority gint

The priority of the idle source. Typically this will be in the range between G_PRIORITY_DEFAULT_IDLE and G_PRIORITY_HIGH_IDLE.

pid GPid

Process 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 GChildWatchFunc

Function to call.

data gpointer

Data to pass to function.

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

Function to call when the idle is removed, or NULL.

 The argument can be NULL.

Return value

Returns: guint

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