function child_watch_add(priority: Number(gint), pid: GLib.Pid, function: GLib.ChildWatchFunc): Number(guint) {
    // Gjs wrapper for g_child_watch_add_full()

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

If you obtain pid from GLib.spawn_async or GLib.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 GLib.spawn_check_exit_status in the callback to determine whether or not the child exited successfully.

Also, note that on platforms where GLib.Pid must be explicitly closed (see GLib.spawn_close_pid) pid must not be closed while the source is still active. Typically, you should invoke GLib.spawn_close_pid in the callback function for the source.

GLib supports only a single callback per process id.

This internally creates a main loop source using GLib.child_watch_source_new and attaches it to the main loop context using GLib.Source.prototype.attach. You can do these steps manually if you need greater control.

Since 2.4


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


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 to call


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