函数

GLibspawn_check_wait_status

自:2.70

申明 [src]

gboolean
g_spawn_check_wait_status (
  gint wait_status,
  GError** error
)

说明 [src]

wait_status 表示子进程异常退出(例如退出代码非零,或通过致命信号退出)时设置 error

g_spawn_sync()g_child_watch_add() 家族的 API 会以特定于平台的方式返回子进程状态。在 Unix 中,这保证与此 waitpid() 返回的格式相同,而在 Windows 中,这保证与此 GetExitCodeProcess() 返回的结果相同。

在 GLib 2.34 中引入此功能之前,解释 wait_status 需要使用特定于平台的 API,这对于使用 GLib 作为跨平台层的软件来说是有问题的。

此外,许多程序只想确定子进程是否成功退出,然后要么传播 GError,要么向标准错误输出打印一条消息。在那种常见情况下,可以使用此功能。请注意,error 中的错误消息将包含有关等待状态的人类可读信息。

如果进程具有“退出代码”,而不是被信号终止,则 errordomaincode 具有特殊语义。在 Unix 中,如果 wait_statusWIFEXITED() 为 true,则会发生这种情况。在 Windows 中,总是会出现这种情况。

特殊语义是实际退出代码将是 error 中设置的代码,并且域将是 G_SPAWN_EXIT_ERROR。这允许您区分不同的退出代码。

如果进程是通过退出状态以外的方式终止的(例如被信号终止),则域将是 G_SPAWN_ERROR,代码将是 G_SPAWN_ERROR_FAILED

此函数只提供便利;您当然也可以通过宏(例如 G_OS_UNIX)检查可用的平台,并直接对 wait_status 使用 WIFEXITED()WEXITSTATUS()。请勿尝试扫描或解析错误消息字符串;它可能会被翻译和/或在 GLib 的未来版本中发生变化。

在 2.70 版本之前,g_spawn_check_exit_status() 提供相同的功能,尽管名称误导人。

自 2.70 起可用

参数

wait_status

类型: gint

g_spawn_sync() 中返回的特定于平台的等待状态。

error

类型: GError **

可恢复错误 的返回位置。

该参数可以为 NULL
如果返回位置不为 NULL,则必须将其初始化为 NULL GError*
如果不存在错误,则该参数将由函数初始化并保留为 NULL
如果发生错误,该参数将被设置一个新分配的 GError;调用者将获取数据的所有权,并负责释放它。

返回值

类型: gboolean

如果子进程成功退出则为 TRUE,否则为 FALSE(并且会设置 error)。