函数

GLibspawn_sync

声明 [src]

gboolean
g_spawn_sync (
  const gchar* working_directory,
  gchar** argv,
  gchar** envp,
  GSpawnFlags flags,
  GSpawnChildSetupFunc child_setup,
  gpointer user_data,
  gchar** standard_output,
  gchar** standard_error,
  gint* wait_status,
  GError** error
)

说明 [src]

同步执行一个子项(在子项退出之前等待其退出)。

如果这些参数为非 NULL,则将子项的所有输出存储在 standard_outputstandard_error 中。请注意,在为 standard_outputstandard_error 传递 NULL 时,你必须设置 G_SPAWN_STDOUT_TO_DEV_NULLG_SPAWN_STDERR_TO_DEV_NULL 标志。

如果 wait_status 为非 NULL,则子项的平台特定状态会存储在那里;有关如何使用和解释它的详细信息,请参见 g_spawn_check_wait_status() 的文档。在 Unix 平台上,请注意它通常不等于传递给 exit() 或从 main() 返回的整数。

请注意,在 flags 中传递 G_SPAWN_DO_NOT_REAP_CHILD 是无效的,并且在 POSIX 平台上,与 g_child_watch_source_new() 相同的限制也适用。

如果发生错误,则不会在 standard_outputstandard_errorwait_status 中返回任何数据。

此函数在内部调用 g_spawn_async_with_pipes();有关其他参数的详细信息以及如何在 Windows 上使用这些函数,请参见该函数。

参数

working_directory

类型: const gchar*

子项当前的工作目录,或 NULL 以继承父项。

该参数可以是 NULL
数据由函数调用者拥有。
该值是平台原生字符串,在 Unix 上使用首选操作系统编码,在 Windows 上使用 UTF-8。
argv

类型: filename 数组

child's argument vector, which must be non-empty and `NULL`-terminated.
该数组必须以 NULL 结尾。
数据由函数调用者拥有。
每个元素都是一个平台原生字符串,在 Unix 上使用首选 OS 编码,在 Windows 上使用 UTF-8。
envp

类型: filename 数组

child's environment, or `NULL` to inherit parent's.
该参数可以是 NULL
该数组必须以 NULL 结尾。
数据由函数调用者拥有。
每个元素都是一个平台原生字符串,在 Unix 上使用首选 OS 编码,在 Windows 上使用 UTF-8。
flags

类型: GSpawnFlags

来自 GSpawnFlags 的标志。

child_setup

类型: GSpawnChildSetupFunc

exec() 之前在子项中运行的函数。

该参数可以是 NULL
user_data

类型: gpointer

child_setup 的用户数据。

该参数可以是 NULL
数据由函数调用者拥有。
standard_output

类型: guint8 数组

子项输出的返回位置,或 NULL

该参数将由函数设置。
该参数可以是 NULL
该数组必须以 NULL 结尾。
函数调用者获取返回的数据的所有权,并负责释放它。
standard_error

类型: guint8 数组

子项错误信息的返回位置,或 NULL

该参数将由函数设置。
该参数可以是 NULL
该数组必须以 NULL 结尾。
函数调用者获取返回的数据的所有权,并负责释放它。
wait_status

类型: gint*

子项等待状态的返回位置(由 waitpid() 返回),或 NULL

该参数将由函数设置。
该参数可以是 NULL
error

类型: GError **

用于 可恢复错误 的返回位置。

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

返回值

类型: gboolean

成功时为TRUE,如果有错误则为FALSE