<!-- ##### SECTION Title ##### -->
Spawning Processes

<!-- ##### SECTION Short_Description ##### -->
process launching with <function>fork()</function>/<function>exec()</function>.

<!-- ##### SECTION Long_Description ##### -->
<para>

</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### ENUM GSpawnError ##### -->
<para>
Error codes returned by spawning processes.
</para>

@G_SPAWN_ERROR_FORK: Fork failed due to lack of memory.
@G_SPAWN_ERROR_READ: Read or select on pipes failed.
@G_SPAWN_ERROR_CHDIR: Changing to working directory failed.
@G_SPAWN_ERROR_ACCES: <function>execv()</function> returned %EACCES.
@G_SPAWN_ERROR_PERM: <function>execv()</function> returned %EPERM.
@G_SPAWN_ERROR_2BIG: <function>execv()</function> returned %E2BIG.
@G_SPAWN_ERROR_NOEXEC: <function>execv()</function> returned %ENOEXEC.
@G_SPAWN_ERROR_NAMETOOLONG: <function>execv()</function> returned %ENAMETOOLONG.
@G_SPAWN_ERROR_NOENT: <function>execv()</function> returned %ENOENT.
@G_SPAWN_ERROR_NOMEM: <function>execv()</function> returned %ENOMEM.
@G_SPAWN_ERROR_NOTDIR: <function>execv()</function> returned %ENOTDIR.
@G_SPAWN_ERROR_LOOP: <function>execv()</function> returned %ELOOP.
@G_SPAWN_ERROR_TXTBUSY: <function>execv()</function> returned %ETXTBUSY.
@G_SPAWN_ERROR_IO: <function>execv()</function> returned %EIO.
@G_SPAWN_ERROR_NFILE: <function>execv()</function> returned %ENFILE.
@G_SPAWN_ERROR_MFILE: <function>execv()</function> returned %EMFILE.
@G_SPAWN_ERROR_INVAL: <function>execv()</function> returned %EINVAL.
@G_SPAWN_ERROR_ISDIR: <function>execv()</function> returned %EISDIR.
@G_SPAWN_ERROR_LIBBAD: <function>execv()</function> returned %ELIBBAD.
@G_SPAWN_ERROR_FAILED: Some other fatal failure, <literal>error-&gt;message</literal> should explain.

<!-- ##### MACRO G_SPAWN_ERROR ##### -->
<para>
Error domain for spawning processes. Errors in this domain will
be from the #GSpawnError enumeration. See #GError for information on
error domains.
</para>



<!-- ##### ENUM GSpawnFlags ##### -->
<para>
Flags passed to g_spawn_sync(), g_spawn_async() and g_spawn_async_with_pipes().
</para>

@G_SPAWN_LEAVE_DESCRIPTORS_OPEN: the parent's open file descriptors will be 
 inherited by the child; otherwise all descriptors except stdin/stdout/stderr 
 will be closed before calling <function>exec()</function> in the child.
@G_SPAWN_DO_NOT_REAP_CHILD: the child will not be automatically reaped; you 
  must call <function>waitpid()</function> or handle <literal>SIGCHLD</literal> 
  yourself, or the child will become a zombie.
@G_SPAWN_SEARCH_PATH: <literal>argv[0]</literal> need not be an absolute path, 
  it will be looked for in the user's <envar>PATH</envar>.
@G_SPAWN_STDOUT_TO_DEV_NULL: the child's standad output will be discarded, 
  instead of going to the same location as the parent's standard output.
@G_SPAWN_STDERR_TO_DEV_NULL: the child's standard error will be discarded.
@G_SPAWN_CHILD_INHERITS_STDIN: the child will inherit the parent's standard 
  input (by default, the child's standard input is attached to 
  <filename>/dev/null</filename>).
@G_SPAWN_FILE_AND_ARGV_ZERO: the first element of <literal>argv</literal> is 
  the file to execute, while the remaining elements are the actual argument 
  vector to pass to the file. Normally g_spawn_async_with_pipes() uses 
  <literal>argv[0]</literal> as the file to execute, and passes all of 
  <literal>argv</literal> to the child.

<!-- ##### USER_FUNCTION GSpawnChildSetupFunc ##### -->
<para>
Specifies the type of the setup function passed to g_spawn_async(),
g_spawn_sync() and g_spawn_async_with_pipes(). It is called in the 
child after GLib has performed all the setup it plans to perform 
but before calling <function>exec()</function>. Obviously, actions 
taken in this function will only affect the child, not the parent.
</para>

@user_data: user data to pass to the function.


<!-- ##### FUNCTION g_spawn_async_with_pipes ##### -->
<para>

</para>

@working_directory: 
@argv: 
@envp: 
@flags: 
@child_setup: 
@user_data: 
@child_pid: 
@standard_input: 
@standard_output: 
@standard_error: 
@error: 
@Returns: 


<!-- ##### FUNCTION g_spawn_async ##### -->
<para>

</para>

@working_directory: 
@argv: 
@envp: 
@flags: 
@child_setup: 
@user_data: 
@child_pid: 
@error: 
@Returns: 


<!-- ##### FUNCTION g_spawn_sync ##### -->
<para>

</para>

@working_directory: 
@argv: 
@envp: 
@flags: 
@child_setup: 
@user_data: 
@standard_output: 
@standard_error: 
@exit_status: 
@error: 
@Returns: 


<!-- ##### FUNCTION g_spawn_command_line_async ##### -->
<para>

</para>

@command_line: 
@error: 
@Returns: 


<!-- ##### FUNCTION g_spawn_command_line_sync ##### -->
<para>

</para>

@command_line: 
@standard_output: 
@standard_error: 
@exit_status: 
@error: 
@Returns: 


<!-- ##### FUNCTION g_spawn_close_pid ##### -->
<para>

</para>

@pid: 


