Creates a new child_watch source.
The source will not initially be associated with any
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
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:
pidmust be a child of this process
pidmust be positive
- the application must not call
waitpidwith a non-positive first argument, for instance in another thread
- the application must not wait for
pidto exit by any other mechanism, including
waitpid(pid, ...)or a second child-watch source for the same
- the application must not ignore
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
ECHILD was received by
waitpid for specific processes other than
pid remains a
valid thing to do.
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).
The newly-created child watch source.
|The caller of the function takes ownership of the data, and is responsible for freeing it.|