函数
GLibchild_watch_add_full
自:2.4
声明 [src]
guint
g_child_watch_add_full (
gint priority,
GPid pid,
GChildWatchFunc function,
gpointer data,
GDestroyNotify notify
)
描述 [src]
设置一个函数,当 pid
指示的子级退出,优先级为 priority
时,该函数将被调用。
如果您从 g_spawn_async()
或 g_spawn_async_with_pipes()
中获得 pid
,则需要将 G_SPAWN_DO_NOT_REAP_CHILD
作为标记传递给 spawn 函数,以便子级观察生效。
在很多程序中,您需要在回调中调用 g_spawn_check_wait_status()
以确定子级是否已成功退出。
还要注意,在 GPid
必须显式关闭(请参阅 g_spawn_close_pid()
)的平台上,当源仍处于活动状态时,不得关闭 pid
。通常,您应该在源的回调函数中调用 g_spawn_close_pid()
。
GLib 仅支持每个进程 ID 一个回调。在 POSIX 平台上,针对 g_child_watch_source_new()
提及的相同限制适用于此函数。
它在内部使用 g_child_watch_source_new()
创建一个主循环源,并使用 g_source_attach()
将其附加到主循环上下文。如果您需要更大的控制权,则可以手动执行这些步骤。
自 2.4 起可用
在语言绑定中,此函数更名为 g_child_watch_add()
。
参数
priority
-
类型:
gint
空闲源的优先级。通常介于
G_PRIORITY_DEFAULT_IDLE
和G_PRIORITY_HIGH_IDLE
之间。 pid
-
类型:
GPid
要观察的进程。在 POSIX 上为子进程的正 pid。在 Windows 上为进程的句柄(不一定为子进程)。
function
-
类型:
GChildWatchFunc
要调用的函数。
data
-
类型:
gpointer
要传递给
function
的数据。参数可以为 NULL
。数据归函数的调用方所有。 notify
-
类型:
GDestroyNotify
在移除空闲时要调用的函数,或为
NULL
。参数可以为 NULL
。