### Function

# GLib spawn_check_wait_status

since: 2.70

#### Declaration

    gboolean
    g_spawn_check_wait_status (
      gint wait_status,
      GError** error
    )

#### Description

Set `error` if `wait_status` indicates the child exited abnormally (e.g. with a nonzero exit code, or via a fatal signal).

The `g_spawn_sync()` and `g_child_watch_add()` family of APIs return the status of subprocesses encoded in a platform-specific way. On Unix, this is guaranteed to be in the same format `waitpid()` returns, and on Windows it is guaranteed to be the result of GetExitCodeProcess().

Prior to the introduction of this function in GLib 2.34, interpreting `wait_status` required use of platform-specific APIs, which is problematic for software using GLib as a cross-platform layer.

Additionally, many programs simply want to determine whether or not the child exited successfully, and either propagate a `GError` or print a message to standard error. In that common case, this function can be used. Note that the error message in `error` will contain human-readable information about the wait status.

The `domain` and `code` of `error` have special semantics in the case where the process has an “exit code”, as opposed to being killed by a signal. On Unix, this happens if WIFEXITED() would be true of `wait_status`. On Windows, it is always the case.

The special semantics are that the actual exit code will be the code set in `error`, and the domain will be `G_SPAWN_EXIT_ERROR`. This allows you to differentiate between different exit codes.

If the process was terminated by some means other than an exit status (for example if it was killed by a signal), the domain will be `G_SPAWN_ERROR` and the code will be `G_SPAWN_ERROR_FAILED`.

This function just offers convenience; you can of course also check the available platform via a macro such as `G_OS_UNIX`, and use WIFEXITED() and WEXITSTATUS() on `wait_status` directly. Do not attempt to scan or parse the error message string; it may be translated and/or change in future versions of GLib.

Prior to version 2.70, `g_spawn_check_exit_status()` provides the same functionality, although under a misleading name.

Available since: 2.70

#### Parameters

`wait_status`

  Type: `gint`

  A platform-specific wait status as returned from g_spawn_sync().

`error`

  Type: `GError **`

  The return location for a recoverable error.

  The argument can be `NULL`.
  If the return location is not `NULL`, then you must initialize it to a `NULL` `GError*`.
  The argument will be left initialized to `NULL` by the function if there are no errors.
  In case of error, the argument will be set to a newly allocated `GError`; the caller will take ownership of the data, and be responsible for freeing it.

#### Return value

Type: `gboolean`

`TRUE` if child exited successfully, `FALSE` otherwise (and `error` will be set).