The source will not initially be associated with any #GMainContext
and must be added to one with g_source_attach() before it will be
executed.
Note that child watch sources can only be used in conjunction with
g_spawn... when the %G_SPAWN_DO_NOT_REAP_CHILD flag is used.
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.
On POSIX platforms, the following restrictions apply to this API
due to limitations in POSIX process interfaces:
* @pid must be a child of this process
* @pid must be positive
* the application must not call waitpid with a non-positive
first argument, for instance in another thread
* the application must not wait for @pid to exit by any other
mechanism, including waitpid(pid, ...) or a second child-watch
source for the same @pid
* the application must not ignore SIGCHLD
If any of those conditions are not met, this and related APIs will
not work correctly. This can often be diagnosed via a GLib warning
stating that ECHILD was received by waitpid.
Calling waitpid for specific processes other than @pid remains a
valid thing to do.
Creates a new child_watch source.
The source will not initially be associated with any #GMainContext and must be added to one with g_source_attach() before it will be executed.
Note that child watch sources can only be used in conjunction with g_spawn... when the %G_SPAWN_DO_NOT_REAP_CHILD flag is used.
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.
On POSIX platforms, the following restrictions apply to this API due to limitations in POSIX process interfaces:
* @pid must be a child of this process * @pid must be positive * the application must not call waitpid with a non-positive first argument, for instance in another thread * the application must not wait for @pid to exit by any other mechanism, including waitpid(pid, ...) or a second child-watch source for the same @pid * the application must not ignore SIGCHLD
If any of those conditions are not met, this and related APIs will not work correctly. This can often be diagnosed via a GLib warning stating that ECHILD was received by waitpid.
Calling waitpid for specific processes other than @pid remains a valid thing to do.