函数

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_IDLEG_PRIORITY_HIGH_IDLE 之间。

pid

类型: GPid

要观察的进程。在 POSIX 上为子进程的正 pid。在 Windows 上为进程的句柄(不一定为子进程)。

function

类型: GChildWatchFunc

要调用的函数。

data

类型: gpointer

要传递给 function 的数据。

参数可以为 NULL
数据归函数的调用方所有。
notify

类型: GDestroyNotify

在移除空闲时要调用的函数,或为 NULL

参数可以为 NULL

返回值

类型: guint

事件源的 ID(大于 0)。