函数
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
中的错误消息将包含有关等待状态的人类可读信息。
如果进程具有“退出代码”,而不是被信号终止,则 error
的 domain
和 code
具有特殊语义。在 Unix 中,如果 wait_status
的 WIFEXITED()
为 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 起可用