函数
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 起可用