| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>GSubprocess: GIO Reference Manual</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> |
| <link rel="home" href="index.html" title="GIO Reference Manual"> |
| <link rel="up" href="subprocesses.html" title="Subprocesses"> |
| <link rel="prev" href="subprocesses.html" title="Subprocesses"> |
| <link rel="next" href="GSubprocessLauncher.html" title="GSubprocess Launcher"> |
| <meta name="generator" content="GTK-Doc V1.25.1 (XML mode)"> |
| <link rel="stylesheet" href="style.css" type="text/css"> |
| </head> |
| <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> |
| <td width="100%" align="left" class="shortcuts"> |
| <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> |
| <a href="#GSubprocess.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> |
| <a href="#GSubprocess.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span> |
| <a href="#GSubprocess.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span> |
| <a href="#GSubprocess.properties" class="shortcut">Properties</a></span> |
| </td> |
| <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> |
| <td><a accesskey="u" href="subprocesses.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> |
| <td><a accesskey="p" href="subprocesses.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> |
| <td><a accesskey="n" href="GSubprocessLauncher.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> |
| </tr></table> |
| <div class="refentry"> |
| <a name="GSubprocess"></a><div class="titlepage"></div> |
| <div class="refnamediv"><table width="100%"><tr> |
| <td valign="top"> |
| <h2><span class="refentrytitle"><a name="GSubprocess.top_of_page"></a>GSubprocess</span></h2> |
| <p>GSubprocess — Child processes</p> |
| </td> |
| <td class="gallery_image" valign="top" align="right"></td> |
| </tr></table></div> |
| <div class="refsect1"> |
| <a name="GSubprocess.functions"></a><h2>Functions</h2> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="functions_return"> |
| <col class="functions_name"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="function_type"> |
| <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="returnvalue">GSubprocess</span></a> * |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-new" title="g_subprocess_new ()">g_subprocess_new</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="returnvalue">GSubprocess</span></a> * |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-newv" title="g_subprocess_newv ()">g_subprocess_newv</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type">const <a href="../glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-identifier" title="g_subprocess_get_identifier ()">g_subprocess_get_identifier</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a class="link" href="GOutputStream.html" title="GOutputStream"><span class="returnvalue">GOutputStream</span></a> * |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-stdin-pipe" title="g_subprocess_get_stdin_pipe ()">g_subprocess_get_stdin_pipe</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a class="link" href="GInputStream.html" title="GInputStream"><span class="returnvalue">GInputStream</span></a> * |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-stdout-pipe" title="g_subprocess_get_stdout_pipe ()">g_subprocess_get_stdout_pipe</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a class="link" href="GInputStream.html" title="GInputStream"><span class="returnvalue">GInputStream</span></a> * |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-stderr-pipe" title="g_subprocess_get_stderr_pipe ()">g_subprocess_get_stderr_pipe</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()">g_subprocess_wait</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <span class="returnvalue">void</span> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-wait-async" title="g_subprocess_wait_async ()">g_subprocess_wait_async</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-wait-finish" title="g_subprocess_wait_finish ()">g_subprocess_wait_finish</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-wait-check" title="g_subprocess_wait_check ()">g_subprocess_wait_check</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <span class="returnvalue">void</span> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-wait-check-async" title="g_subprocess_wait_check_async ()">g_subprocess_wait_check_async</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-wait-check-finish" title="g_subprocess_wait_check_finish ()">g_subprocess_wait_check_finish</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-successful" title="g_subprocess_get_successful ()">g_subprocess_get_successful</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-if-exited" title="g_subprocess_get_if_exited ()">g_subprocess_get_if_exited</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-exit-status" title="g_subprocess_get_exit_status ()">g_subprocess_get_exit_status</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-if-signaled" title="g_subprocess_get_if_signaled ()">g_subprocess_get_if_signaled</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-term-sig" title="g_subprocess_get_term_sig ()">g_subprocess_get_term_sig</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-get-status" title="g_subprocess_get_status ()">g_subprocess_get_status</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <span class="returnvalue">void</span> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-send-signal" title="g_subprocess_send_signal ()">g_subprocess_send_signal</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <span class="returnvalue">void</span> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-force-exit" title="g_subprocess_force_exit ()">g_subprocess_force_exit</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-communicate" title="g_subprocess_communicate ()">g_subprocess_communicate</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <span class="returnvalue">void</span> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-communicate-async" title="g_subprocess_communicate_async ()">g_subprocess_communicate_async</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-communicate-finish" title="g_subprocess_communicate_finish ()">g_subprocess_communicate_finish</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-communicate-utf8" title="g_subprocess_communicate_utf8 ()">g_subprocess_communicate_utf8</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <span class="returnvalue">void</span> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-communicate-utf8-async" title="g_subprocess_communicate_utf8_async ()">g_subprocess_communicate_utf8_async</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| <tr> |
| <td class="function_type"> |
| <a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| </td> |
| <td class="function_name"> |
| <a class="link" href="GSubprocess.html#g-subprocess-communicate-utf8-finish" title="g_subprocess_communicate_utf8_finish ()">g_subprocess_communicate_utf8_finish</a> <span class="c_punctuation">()</span> |
| </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.properties"></a><h2>Properties</h2> |
| <div class="informaltable"><table class="informaltable" border="0"> |
| <colgroup> |
| <col width="150px" class="properties_type"> |
| <col width="300px" class="properties_name"> |
| <col width="200px" class="properties_flags"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="property_type"><a href="../glib-String-Utility-Functions.html#GStrv"><span class="type">GStrv</span></a></td> |
| <td class="property_name"><a class="link" href="GSubprocess.html#GSubprocess--argv" title="The “argv” property">argv</a></td> |
| <td class="property_flags">Write / Construct Only</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a class="link" href="GSubprocess.html#GSubprocessFlags" title="enum GSubprocessFlags"><span class="type">GSubprocessFlags</span></a></td> |
| <td class="property_name"><a class="link" href="GSubprocess.html#GSubprocess--flags" title="The “flags” property">flags</a></td> |
| <td class="property_flags">Write / Construct Only</td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.other"></a><h2>Types and Values</h2> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="name"> |
| <col class="description"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="datatype_keyword"> </td> |
| <td class="function_name"><a class="link" href="GSubprocess.html#GSubprocess-struct" title="GSubprocess">GSubprocess</a></td> |
| </tr> |
| <tr> |
| <td class="datatype_keyword">enum</td> |
| <td class="function_name"><a class="link" href="GSubprocess.html#GSubprocessFlags" title="enum GSubprocessFlags">GSubprocessFlags</a></td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.object-hierarchy"></a><h2>Object Hierarchy</h2> |
| <pre class="screen"> <a href="../gobject-The-Base-Object-Type.html#GObject-struct">GObject</a> |
| <span class="lineart">╰──</span> GSubprocess |
| </pre> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.implemented-interfaces"></a><h2>Implemented Interfaces</h2> |
| <p> |
| GSubprocess implements |
| <a class="link" href="GInitable.html" title="GInitable">GInitable</a>.</p> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.includes"></a><h2>Includes</h2> |
| <pre class="synopsis">#include <gio/gio.h> |
| </pre> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.description"></a><h2>Description</h2> |
| <p><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> allows the creation of and interaction with child |
| processes.</p> |
| <p>Processes can be communicated with using standard GIO-style APIs (ie: |
| <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a>, <a class="link" href="GOutputStream.html" title="GOutputStream"><span class="type">GOutputStream</span></a>). There are GIO-style APIs to wait for |
| process termination (ie: cancellable and with an asynchronous |
| variant).</p> |
| <p>There is an API to force a process to terminate, as well as a |
| race-free API for sending UNIX signals to a subprocess.</p> |
| <p>One major advantage that GIO brings over the core GLib library is |
| comprehensive API for asynchronous I/O, such |
| <a class="link" href="GOutputStream.html#g-output-stream-splice-async" title="g_output_stream_splice_async ()"><code class="function">g_output_stream_splice_async()</code></a>. This makes GSubprocess |
| significantly more powerful and flexible than equivalent APIs in |
| some other languages such as the <code class="literal">subprocess.py</code> |
| included with Python. For example, using <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> one could |
| create two child processes, reading standard output from the first, |
| processing it, and writing to the input stream of the second, all |
| without blocking the main loop.</p> |
| <p>A powerful <a class="link" href="GSubprocess.html#g-subprocess-communicate" title="g_subprocess_communicate ()"><code class="function">g_subprocess_communicate()</code></a> API is provided similar to the |
| <code class="literal"><code class="function">communicate()</code></code> method of <code class="literal">subprocess.py</code>. This enables very easy |
| interaction with a subprocess that has been opened with pipes.</p> |
| <p><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> defaults to tight control over the file descriptors open |
| in the child process, avoiding dangling-fd issues that are caused by |
| a simple <code class="function">fork()</code>/<code class="function">exec()</code>. The only open file descriptors in the |
| spawned process are ones that were explicitly specified by the |
| <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> API (unless <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-INHERIT-FDS:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_INHERIT_FDS</code></a> was |
| specified).</p> |
| <p><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> will quickly reap all child processes as they exit, |
| avoiding "zombie processes" remaining around for long periods of |
| time. <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> can be used to wait for this to happen, |
| but it will happen even without the call being explicitly made.</p> |
| <p>As a matter of principle, <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> has no API that accepts |
| shell-style space-separated strings. It will, however, match the |
| typical shell behaviour of searching the PATH for executables that do |
| not contain a directory separator in their name.</p> |
| <p><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> attempts to have a very simple API for most uses (ie: |
| spawning a subprocess with arguments and support for most typical |
| kinds of input and output redirection). See <a class="link" href="GSubprocess.html#g-subprocess-new" title="g_subprocess_new ()"><code class="function">g_subprocess_new()</code></a>. The |
| <a class="link" href="GSubprocessLauncher.html" title="GSubprocess Launcher"><span class="type">GSubprocessLauncher</span></a> API is provided for more complicated cases |
| (advanced types of redirection, environment variable manipulation, |
| change of working directory, child setup functions, etc).</p> |
| <p>A typical use of <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> will involve calling |
| <a class="link" href="GSubprocess.html#g-subprocess-new" title="g_subprocess_new ()"><code class="function">g_subprocess_new()</code></a>, followed by <a class="link" href="GSubprocess.html#g-subprocess-wait-async" title="g_subprocess_wait_async ()"><code class="function">g_subprocess_wait_async()</code></a> or |
| <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a>. After the process exits, the status can be |
| checked using functions such as <a class="link" href="GSubprocess.html#g-subprocess-get-if-exited" title="g_subprocess_get_if_exited ()"><code class="function">g_subprocess_get_if_exited()</code></a> (which |
| are similar to the familiar WIFEXITED-style POSIX macros).</p> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.functions_details"></a><h2>Functions</h2> |
| <div class="refsect2"> |
| <a name="g-subprocess-new"></a><h3>g_subprocess_new ()</h3> |
| <pre class="programlisting"><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="returnvalue">GSubprocess</span></a> * |
| g_subprocess_new (<em class="parameter"><code><a class="link" href="GSubprocess.html#GSubprocessFlags" title="enum GSubprocessFlags"><span class="type">GSubprocessFlags</span></a> flags</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>, |
| <em class="parameter"><code>const <a href="../glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *argv0</code></em>, |
| <em class="parameter"><code>...</code></em>);</pre> |
| <p>Create a new process with the given flags and varargs argument |
| list. By default, matching the <a href="../glib-Spawning-Processes.html#g-spawn-async"><code class="function">g_spawn_async()</code></a> defaults, the |
| child's stdin will be set to the system null device, and |
| stdout/stderr will be inherited from the parent. You can use |
| <em class="parameter"><code>flags</code></em> |
| to control this behavior.</p> |
| <p>The argument list must be terminated with <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p> |
| <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p> |
| <div class="refsect3"> |
| <a name="g-subprocess-new.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>flags</p></td> |
| <td class="parameter_description"><p>flags that define the behaviour of the subprocess</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p> return location for an error, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>argv0</p></td> |
| <td class="parameter_description"><p>first commandline argument to pass to the subprocess</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>...</p></td> |
| <td class="parameter_description"><p>more commandline arguments, followed by <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-new.returns"></a><h4>Returns</h4> |
| <p> A newly created <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a>, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on error (and <em class="parameter"><code>error</code></em> |
| will be set)</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-newv"></a><h3>g_subprocess_newv ()</h3> |
| <pre class="programlisting"><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="returnvalue">GSubprocess</span></a> * |
| g_subprocess_newv (<em class="parameter"><code>const <a href="../glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> * const *argv</code></em>, |
| <em class="parameter"><code><a class="link" href="GSubprocess.html#GSubprocessFlags" title="enum GSubprocessFlags"><span class="type">GSubprocessFlags</span></a> flags</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Create a new process with the given flags and argument list.</p> |
| <p>The argument list is expected to be <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated.</p> |
| <p><span class="annotation">[<acronym title="Rename the original symbol's name to SYMBOL."><span class="acronym">rename-to</span></acronym> g_subprocess_new]</span></p> |
| <div class="refsect3"> |
| <a name="g-subprocess-newv.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>argv</p></td> |
| <td class="parameter_description"><p> commandline arguments for the subprocess. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>flags</p></td> |
| <td class="parameter_description"><p>flags that define the behaviour of the subprocess</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p> return location for an error, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-newv.returns"></a><h4>Returns</h4> |
| <p> A newly created <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a>, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on error (and <em class="parameter"><code>error</code></em> |
| will be set)</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-identifier"></a><h3>g_subprocess_get_identifier ()</h3> |
| <pre class="programlisting">const <a href="../glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * |
| g_subprocess_get_identifier (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>On UNIX, returns the process ID as a decimal string. |
| On Windows, returns the result of <code class="function">GetProcessId()</code> also as a string.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-identifier.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-stdin-pipe"></a><h3>g_subprocess_get_stdin_pipe ()</h3> |
| <pre class="programlisting"><a class="link" href="GOutputStream.html" title="GOutputStream"><span class="returnvalue">GOutputStream</span></a> * |
| g_subprocess_get_stdin_pipe (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Gets the <a class="link" href="GOutputStream.html" title="GOutputStream"><span class="type">GOutputStream</span></a> that you can write to in order to give data |
| to the stdin of <em class="parameter"><code>subprocess</code></em> |
| .</p> |
| <p>The process must have been created with |
| <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDIN-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDIN_PIPE</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-stdin-pipe.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-stdin-pipe.returns"></a><h4>Returns</h4> |
| <p> the stdout pipe. </p> |
| <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-stdout-pipe"></a><h3>g_subprocess_get_stdout_pipe ()</h3> |
| <pre class="programlisting"><a class="link" href="GInputStream.html" title="GInputStream"><span class="returnvalue">GInputStream</span></a> * |
| g_subprocess_get_stdout_pipe (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Gets the <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a> from which to read the stdout output of |
| <em class="parameter"><code>subprocess</code></em> |
| .</p> |
| <p>The process must have been created with |
| <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDOUT-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDOUT_PIPE</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-stdout-pipe.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-stdout-pipe.returns"></a><h4>Returns</h4> |
| <p> the stdout pipe. </p> |
| <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-stderr-pipe"></a><h3>g_subprocess_get_stderr_pipe ()</h3> |
| <pre class="programlisting"><a class="link" href="GInputStream.html" title="GInputStream"><span class="returnvalue">GInputStream</span></a> * |
| g_subprocess_get_stderr_pipe (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Gets the <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a> from which to read the stderr output of |
| <em class="parameter"><code>subprocess</code></em> |
| .</p> |
| <p>The process must have been created with |
| <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDERR-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDERR_PIPE</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-stderr-pipe.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-stderr-pipe.returns"></a><h4>Returns</h4> |
| <p> the stderr pipe. </p> |
| <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-wait"></a><h3>g_subprocess_wait ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_wait (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Synchronously wait for the subprocess to terminate.</p> |
| <p>After the process terminates you can query its exit status with |
| functions such as <a class="link" href="GSubprocess.html#g-subprocess-get-if-exited" title="g_subprocess_get_if_exited ()"><code class="function">g_subprocess_get_if_exited()</code></a> and |
| <a class="link" href="GSubprocess.html#g-subprocess-get-exit-status" title="g_subprocess_get_exit_status ()"><code class="function">g_subprocess_get_exit_status()</code></a>.</p> |
| <p>This function does not fail in the case of the subprocess having |
| abnormal termination. See <a class="link" href="GSubprocess.html#g-subprocess-wait-check" title="g_subprocess_wait_check ()"><code class="function">g_subprocess_wait_check()</code></a> for that.</p> |
| <p>Cancelling <em class="parameter"><code>cancellable</code></em> |
| doesn't kill the subprocess. Call |
| <a class="link" href="GSubprocess.html#g-subprocess-force-exit" title="g_subprocess_force_exit ()"><code class="function">g_subprocess_force_exit()</code></a> if it is desirable.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>cancellable</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p>a <a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait.returns"></a><h4>Returns</h4> |
| <p> <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success, <a href="../glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>cancellable</code></em> |
| was cancelled</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-wait-async"></a><h3>g_subprocess_wait_async ()</h3> |
| <pre class="programlisting"><span class="returnvalue">void</span> |
| g_subprocess_wait_async (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>, |
| <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>, |
| <em class="parameter"><code><a href="../glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> |
| <p>Wait for the subprocess to terminate.</p> |
| <p>This is the asynchronous version of <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait-async.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>cancellable</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a>, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>callback</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the operation is complete</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>user_data</p></td> |
| <td class="parameter_description"><p>user_data for <em class="parameter"><code>callback</code></em> |
| </p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-wait-finish"></a><h3>g_subprocess_wait_finish ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_wait_finish (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *result</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Collects the result of a previous call to |
| <a class="link" href="GSubprocess.html#g-subprocess-wait-async" title="g_subprocess_wait_async ()"><code class="function">g_subprocess_wait_async()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait-finish.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>result</p></td> |
| <td class="parameter_description"><p>the <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> passed to your <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p>a pointer to a <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait-finish.returns"></a><h4>Returns</h4> |
| <p> <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, or <a href="../glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> with <em class="parameter"><code>error</code></em> |
| set</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-wait-check"></a><h3>g_subprocess_wait_check ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_wait_check (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Combines <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> with <a href="../glib-Spawning-Processes.html#g-spawn-check-exit-status"><code class="function">g_spawn_check_exit_status()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait-check.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>cancellable</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p>a <a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait-check.returns"></a><h4>Returns</h4> |
| <p> <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success, <a href="../glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if process exited abnormally, or |
| <em class="parameter"><code>cancellable</code></em> |
| was cancelled</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-wait-check-async"></a><h3>g_subprocess_wait_check_async ()</h3> |
| <pre class="programlisting"><span class="returnvalue">void</span> |
| g_subprocess_wait_check_async (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>, |
| <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>, |
| <em class="parameter"><code><a href="../glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> |
| <p>Combines <a class="link" href="GSubprocess.html#g-subprocess-wait-async" title="g_subprocess_wait_async ()"><code class="function">g_subprocess_wait_async()</code></a> with <a href="../glib-Spawning-Processes.html#g-spawn-check-exit-status"><code class="function">g_spawn_check_exit_status()</code></a>.</p> |
| <p>This is the asynchronous version of <a class="link" href="GSubprocess.html#g-subprocess-wait-check" title="g_subprocess_wait_check ()"><code class="function">g_subprocess_wait_check()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait-check-async.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>cancellable</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a>, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>callback</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the operation is complete</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>user_data</p></td> |
| <td class="parameter_description"><p>user_data for <em class="parameter"><code>callback</code></em> |
| </p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-wait-check-finish"></a><h3>g_subprocess_wait_check_finish ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_wait_check_finish (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *result</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Collects the result of a previous call to |
| <a class="link" href="GSubprocess.html#g-subprocess-wait-check-async" title="g_subprocess_wait_check_async ()"><code class="function">g_subprocess_wait_check_async()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait-check-finish.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>result</p></td> |
| <td class="parameter_description"><p>the <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> passed to your <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p>a pointer to a <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-wait-check-finish.returns"></a><h4>Returns</h4> |
| <p> <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful, or <a href="../glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> with <em class="parameter"><code>error</code></em> |
| set</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-successful"></a><h3>g_subprocess_get_successful ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_get_successful (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Checks if the process was "successful". A process is considered |
| successful if it exited cleanly with an exit status of 0, either by |
| way of the <code class="function">exit()</code> system call or return from <code class="function">main()</code>.</p> |
| <p>It is an error to call this function before <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> has |
| returned.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-successful.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-successful.returns"></a><h4>Returns</h4> |
| <p> <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the process exited cleanly with a exit status of 0</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-if-exited"></a><h3>g_subprocess_get_if_exited ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_get_if_exited (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Check if the given subprocess exited normally (ie: by way of <code class="function">exit()</code> |
| or return from <code class="function">main()</code>).</p> |
| <p>This is equivalent to the system WIFEXITED macro.</p> |
| <p>It is an error to call this function before <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> has |
| returned.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-if-exited.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-if-exited.returns"></a><h4>Returns</h4> |
| <p> <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the case of a normal exit</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-exit-status"></a><h3>g_subprocess_get_exit_status ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> |
| g_subprocess_get_exit_status (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Check the exit status of the subprocess, given that it exited |
| normally. This is the value passed to the <code class="function">exit()</code> system call or the |
| return value from main.</p> |
| <p>This is equivalent to the system WEXITSTATUS macro.</p> |
| <p>It is an error to call this function before <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> and |
| unless <a class="link" href="GSubprocess.html#g-subprocess-get-if-exited" title="g_subprocess_get_if_exited ()"><code class="function">g_subprocess_get_if_exited()</code></a> returned <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-exit-status.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-exit-status.returns"></a><h4>Returns</h4> |
| <p> the exit status</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-if-signaled"></a><h3>g_subprocess_get_if_signaled ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_get_if_signaled (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Check if the given subprocess terminated in response to a signal.</p> |
| <p>This is equivalent to the system WIFSIGNALED macro.</p> |
| <p>It is an error to call this function before <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> has |
| returned.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-if-signaled.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-if-signaled.returns"></a><h4>Returns</h4> |
| <p> <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the case of termination due to a signal</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-term-sig"></a><h3>g_subprocess_get_term_sig ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> |
| g_subprocess_get_term_sig (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Get the signal number that caused the subprocess to terminate, given |
| that it terminated due to a signal.</p> |
| <p>This is equivalent to the system WTERMSIG macro.</p> |
| <p>It is an error to call this function before <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> and |
| unless <a class="link" href="GSubprocess.html#g-subprocess-get-if-signaled" title="g_subprocess_get_if_signaled ()"><code class="function">g_subprocess_get_if_signaled()</code></a> returned <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-term-sig.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-term-sig.returns"></a><h4>Returns</h4> |
| <p> the signal causing termination</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-get-status"></a><h3>g_subprocess_get_status ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> |
| g_subprocess_get_status (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Gets the raw status code of the process, as from <code class="function">waitpid()</code>.</p> |
| <p>This value has no particular meaning, but it can be used with the |
| macros defined by the system headers such as WIFEXITED. It can also |
| be used with <a href="../glib-Spawning-Processes.html#g-spawn-check-exit-status"><code class="function">g_spawn_check_exit_status()</code></a>.</p> |
| <p>It is more likely that you want to use <a class="link" href="GSubprocess.html#g-subprocess-get-if-exited" title="g_subprocess_get_if_exited ()"><code class="function">g_subprocess_get_if_exited()</code></a> |
| followed by <a class="link" href="GSubprocess.html#g-subprocess-get-exit-status" title="g_subprocess_get_exit_status ()"><code class="function">g_subprocess_get_exit_status()</code></a>.</p> |
| <p>It is an error to call this function before <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> has |
| returned.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-status.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-get-status.returns"></a><h4>Returns</h4> |
| <p> the (meaningless) <code class="function">waitpid()</code> exit status from the kernel</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-send-signal"></a><h3>g_subprocess_send_signal ()</h3> |
| <pre class="programlisting"><span class="returnvalue">void</span> |
| g_subprocess_send_signal (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a href="../glib-Basic-Types.html#gint"><span class="type">gint</span></a> signal_num</code></em>);</pre> |
| <p>Sends the UNIX signal <em class="parameter"><code>signal_num</code></em> |
| to the subprocess, if it is still |
| running.</p> |
| <p>This API is race-free. If the subprocess has terminated, it will not |
| be signalled.</p> |
| <p>This API is not available on Windows.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-send-signal.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>signal_num</p></td> |
| <td class="parameter_description"><p>the signal number to send</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-force-exit"></a><h3>g_subprocess_force_exit ()</h3> |
| <pre class="programlisting"><span class="returnvalue">void</span> |
| g_subprocess_force_exit (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>);</pre> |
| <p>Use an operating-system specific method to attempt an immediate, |
| forceful termination of the process. There is no mechanism to |
| determine whether or not the request itself was successful; |
| however, you can use <a class="link" href="GSubprocess.html#g-subprocess-wait" title="g_subprocess_wait ()"><code class="function">g_subprocess_wait()</code></a> to monitor the status of |
| the process after calling this function.</p> |
| <p>On Unix, this function sends <code class="literal">SIGKILL</code>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-force-exit.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody><tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-communicate"></a><h3>g_subprocess_communicate ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_communicate (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a href="../glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> *stdin_buf</code></em>, |
| <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>, |
| <em class="parameter"><code><a href="../glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> **stdout_buf</code></em>, |
| <em class="parameter"><code><a href="../glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> **stderr_buf</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Communicate with the subprocess until it terminates, and all input |
| and output has been completed.</p> |
| <p>If <em class="parameter"><code>stdin_buf</code></em> |
| is given, the subprocess must have been created with |
| <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDIN-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDIN_PIPE</code></a>. The given data is fed to the |
| stdin of the subprocess and the pipe is closed (ie: EOF).</p> |
| <p>At the same time (as not to cause blocking when dealing with large |
| amounts of data), if <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDOUT-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDOUT_PIPE</code></a> or |
| <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDERR-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDERR_PIPE</code></a> were used, reads from those |
| streams. The data that was read is returned in <em class="parameter"><code>stdout</code></em> |
| and/or |
| the <em class="parameter"><code>stderr</code></em> |
| .</p> |
| <p>If the subprocess was created with <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDOUT-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDOUT_PIPE</code></a>, |
| <em class="parameter"><code>stdout_buf</code></em> |
| will contain the data read from stdout. Otherwise, for |
| subprocesses not created with <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDOUT-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDOUT_PIPE</code></a>, |
| <em class="parameter"><code>stdout_buf</code></em> |
| will be set to <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. Similar provisions apply to |
| <em class="parameter"><code>stderr_buf</code></em> |
| and <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDERR-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDERR_PIPE</code></a>.</p> |
| <p>As usual, any output variable may be given as <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to ignore it.</p> |
| <p>If you desire the stdout and stderr data to be interleaved, create |
| the subprocess with <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDOUT-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDOUT_PIPE</code></a> and |
| <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDERR-MERGE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDERR_MERGE</code></a>. The merged result will be returned |
| in <em class="parameter"><code>stdout_buf</code></em> |
| and <em class="parameter"><code>stderr_buf</code></em> |
| will be set to <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p> |
| <p>In case of any error (including cancellation), <a href="../glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> will be |
| returned with <em class="parameter"><code>error</code></em> |
| set. Some or all of the stdin data may have |
| been written. Any stdout or stderr data that has been read will be |
| discarded. None of the out variables (aside from <em class="parameter"><code>error</code></em> |
| ) will have |
| been set to anything in particular and should not be inspected.</p> |
| <p>In the case that <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> is returned, the subprocess has exited and the |
| exit status inspection APIs (eg: <a class="link" href="GSubprocess.html#g-subprocess-get-if-exited" title="g_subprocess_get_if_exited ()"><code class="function">g_subprocess_get_if_exited()</code></a>, |
| <a class="link" href="GSubprocess.html#g-subprocess-get-exit-status" title="g_subprocess_get_exit_status ()"><code class="function">g_subprocess_get_exit_status()</code></a>) may be used.</p> |
| <p>You should not attempt to use any of the subprocess pipes after |
| starting this function, since they may be left in strange states, |
| even if the operation was cancelled. You should especially not |
| attempt to interact with the pipes while the operation is in progress |
| (either from another thread or if using the asynchronous version).</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-communicate.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stdin_buf</p></td> |
| <td class="parameter_description"><p> data to send to the stdin of the subprocess, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>cancellable</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stdout_buf</p></td> |
| <td class="parameter_description"><p> data read from the subprocess stdout. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stderr_buf</p></td> |
| <td class="parameter_description"><p> data read from the subprocess stderr. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p>a pointer to a <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> pointer, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <div class="refsect3"> |
| <a name="g-subprocess-communicate.returns"></a><h4>Returns</h4> |
| <p> <a href="../glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if successful</p> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-communicate-async"></a><h3>g_subprocess_communicate_async ()</h3> |
| <pre class="programlisting"><span class="returnvalue">void</span> |
| g_subprocess_communicate_async (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a href="../glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> *stdin_buf</code></em>, |
| <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>, |
| <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>, |
| <em class="parameter"><code><a href="../glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> |
| <p>Asynchronous version of <a class="link" href="GSubprocess.html#g-subprocess-communicate" title="g_subprocess_communicate ()"><code class="function">g_subprocess_communicate()</code></a>. Complete |
| invocation with <a class="link" href="GSubprocess.html#g-subprocess-communicate-finish" title="g_subprocess_communicate_finish ()"><code class="function">g_subprocess_communicate_finish()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-communicate-async.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>Self</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stdin_buf</p></td> |
| <td class="parameter_description"><p> Input data, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>cancellable</p></td> |
| <td class="parameter_description"><p> Cancellable. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>callback</p></td> |
| <td class="parameter_description"><p>Callback</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>user_data</p></td> |
| <td class="parameter_description"><p>User data</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-communicate-finish"></a><h3>g_subprocess_communicate_finish ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_communicate_finish (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *result</code></em>, |
| <em class="parameter"><code><a href="../glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> **stdout_buf</code></em>, |
| <em class="parameter"><code><a href="../glib-Byte-Arrays.html#GBytes"><span class="type">GBytes</span></a> **stderr_buf</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Complete an invocation of <a class="link" href="GSubprocess.html#g-subprocess-communicate-async" title="g_subprocess_communicate_async ()"><code class="function">g_subprocess_communicate_async()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-communicate-finish.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>Self</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>result</p></td> |
| <td class="parameter_description"><p>Result</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stdout_buf</p></td> |
| <td class="parameter_description"><p> Return location for stdout data. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stderr_buf</p></td> |
| <td class="parameter_description"><p> Return location for stderr data. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p>Error</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-communicate-utf8"></a><h3>g_subprocess_communicate_utf8 ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_communicate_utf8 (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code>const <span class="type">char</span> *stdin_buf</code></em>, |
| <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>, |
| <em class="parameter"><code><span class="type">char</span> **stdout_buf</code></em>, |
| <em class="parameter"><code><span class="type">char</span> **stderr_buf</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Like <a class="link" href="GSubprocess.html#g-subprocess-communicate" title="g_subprocess_communicate ()"><code class="function">g_subprocess_communicate()</code></a>, but validates the output of the |
| process as UTF-8, and returns it as a regular NUL terminated string.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-communicate-utf8.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stdin_buf</p></td> |
| <td class="parameter_description"><p> data to send to the stdin of the subprocess, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>cancellable</p></td> |
| <td class="parameter_description"><p>a <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stdout_buf</p></td> |
| <td class="parameter_description"><p> data read from the subprocess stdout. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stderr_buf</p></td> |
| <td class="parameter_description"><p> data read from the subprocess stderr. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p>a pointer to a <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> <a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> pointer, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-communicate-utf8-async"></a><h3>g_subprocess_communicate_utf8_async ()</h3> |
| <pre class="programlisting"><span class="returnvalue">void</span> |
| g_subprocess_communicate_utf8_async (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code>const <span class="type">char</span> *stdin_buf</code></em>, |
| <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>, |
| <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>, |
| <em class="parameter"><code><a href="../glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> |
| <p>Asynchronous version of <a class="link" href="GSubprocess.html#g-subprocess-communicate-utf8" title="g_subprocess_communicate_utf8 ()"><code class="function">g_subprocess_communicate_utf8()</code></a>. Complete |
| invocation with <a class="link" href="GSubprocess.html#g-subprocess-communicate-utf8-finish" title="g_subprocess_communicate_utf8_finish ()"><code class="function">g_subprocess_communicate_utf8_finish()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-communicate-utf8-async.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>Self</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stdin_buf</p></td> |
| <td class="parameter_description"><p> Input data, or <a href="../glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>cancellable</p></td> |
| <td class="parameter_description"><p>Cancellable</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>callback</p></td> |
| <td class="parameter_description"><p>Callback</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>user_data</p></td> |
| <td class="parameter_description"><p>User data</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="g-subprocess-communicate-utf8-finish"></a><h3>g_subprocess_communicate_utf8_finish ()</h3> |
| <pre class="programlisting"><a href="../glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> |
| g_subprocess_communicate_utf8_finish (<em class="parameter"><code><a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a> *subprocess</code></em>, |
| <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *result</code></em>, |
| <em class="parameter"><code><span class="type">char</span> **stdout_buf</code></em>, |
| <em class="parameter"><code><span class="type">char</span> **stderr_buf</code></em>, |
| <em class="parameter"><code><a href="../glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> |
| <p>Complete an invocation of <a class="link" href="GSubprocess.html#g-subprocess-communicate-utf8-async" title="g_subprocess_communicate_utf8_async ()"><code class="function">g_subprocess_communicate_utf8_async()</code></a>.</p> |
| <div class="refsect3"> |
| <a name="g-subprocess-communicate-utf8-finish.parameters"></a><h4>Parameters</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="parameters_name"> |
| <col class="parameters_description"> |
| <col width="200px" class="parameters_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="parameter_name"><p>subprocess</p></td> |
| <td class="parameter_description"><p>Self</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>result</p></td> |
| <td class="parameter_description"><p>Result</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stdout_buf</p></td> |
| <td class="parameter_description"><p> Return location for stdout data. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>stderr_buf</p></td> |
| <td class="parameter_description"><p> Return location for stderr data. </p></td> |
| <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> |
| </tr> |
| <tr> |
| <td class="parameter_name"><p>error</p></td> |
| <td class="parameter_description"><p>Error</p></td> |
| <td class="parameter_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.other_details"></a><h2>Types and Values</h2> |
| <div class="refsect2"> |
| <a name="GSubprocess-struct"></a><h3>GSubprocess</h3> |
| <pre class="programlisting">typedef struct _GSubprocess GSubprocess;</pre> |
| <p>A child process.</p> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GSubprocessFlags"></a><h3>enum GSubprocessFlags</h3> |
| <p>Flags to define the behaviour of a <a class="link" href="GSubprocess.html" title="GSubprocess"><span class="type">GSubprocess</span></a>.</p> |
| <p>Note that the default for stdin is to redirect from /dev/null. For |
| stdout and stderr the default are for them to inherit the |
| corresponding descriptor from the calling process.</p> |
| <p>Note that it is a programmer error to mix 'incompatible' flags. For |
| example, you may not request both <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDOUT-PIPE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDOUT_PIPE</code></a> and |
| <a class="link" href="GSubprocess.html#G-SUBPROCESS-FLAGS-STDOUT-SILENCE:CAPS"><code class="literal">G_SUBPROCESS_FLAGS_STDOUT_SILENCE</code></a>.</p> |
| <div class="refsect3"> |
| <a name="GSubprocessFlags.members"></a><h4>Members</h4> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="300px" class="enum_members_name"> |
| <col class="enum_members_description"> |
| <col width="200px" class="enum_members_annotations"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-NONE:CAPS"></a>G_SUBPROCESS_FLAGS_NONE</p></td> |
| <td class="enum_member_description"> |
| <p>No flags.</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-STDIN-PIPE:CAPS"></a>G_SUBPROCESS_FLAGS_STDIN_PIPE</p></td> |
| <td class="enum_member_description"> |
| <p>create a pipe for the stdin of the |
| spawned process that can be accessed with |
| <a class="link" href="GSubprocess.html#g-subprocess-get-stdin-pipe" title="g_subprocess_get_stdin_pipe ()"><code class="function">g_subprocess_get_stdin_pipe()</code></a>.</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-STDIN-INHERIT:CAPS"></a>G_SUBPROCESS_FLAGS_STDIN_INHERIT</p></td> |
| <td class="enum_member_description"> |
| <p>stdin is inherited from the |
| calling process.</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-STDOUT-PIPE:CAPS"></a>G_SUBPROCESS_FLAGS_STDOUT_PIPE</p></td> |
| <td class="enum_member_description"> |
| <p>create a pipe for the stdout of the |
| spawned process that can be accessed with |
| <a class="link" href="GSubprocess.html#g-subprocess-get-stdout-pipe" title="g_subprocess_get_stdout_pipe ()"><code class="function">g_subprocess_get_stdout_pipe()</code></a>.</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-STDOUT-SILENCE:CAPS"></a>G_SUBPROCESS_FLAGS_STDOUT_SILENCE</p></td> |
| <td class="enum_member_description"> |
| <p>silence the stdout of the spawned |
| process (ie: redirect to /dev/null).</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-STDERR-PIPE:CAPS"></a>G_SUBPROCESS_FLAGS_STDERR_PIPE</p></td> |
| <td class="enum_member_description"> |
| <p>create a pipe for the stderr of the |
| spawned process that can be accessed with |
| <a class="link" href="GSubprocess.html#g-subprocess-get-stderr-pipe" title="g_subprocess_get_stderr_pipe ()"><code class="function">g_subprocess_get_stderr_pipe()</code></a>.</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-STDERR-SILENCE:CAPS"></a>G_SUBPROCESS_FLAGS_STDERR_SILENCE</p></td> |
| <td class="enum_member_description"> |
| <p>silence the stderr of the spawned |
| process (ie: redirect to /dev/null).</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-STDERR-MERGE:CAPS"></a>G_SUBPROCESS_FLAGS_STDERR_MERGE</p></td> |
| <td class="enum_member_description"> |
| <p>merge the stderr of the spawned |
| process with whatever the stdout happens to be. This is a good way |
| of directing both streams to a common log file, for example.</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| <tr> |
| <td class="enum_member_name"><p><a name="G-SUBPROCESS-FLAGS-INHERIT-FDS:CAPS"></a>G_SUBPROCESS_FLAGS_INHERIT_FDS</p></td> |
| <td class="enum_member_description"> |
| <p>spawned processes will inherit the |
| file descriptors of their parent, unless those descriptors have |
| been explicitly marked as close-on-exec. This flag has no effect |
| over the "standard" file descriptors (stdin, stdout, stderr).</p> |
| </td> |
| <td class="enum_member_annotations"> </td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <p class="since">Since: <a class="link" href="api-index-2-40.html#api-index-2.40">2.40</a></p> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.property-details"></a><h2>Property Details</h2> |
| <div class="refsect2"> |
| <a name="GSubprocess--argv"></a><h3>The <code class="literal">“argv”</code> property</h3> |
| <pre class="programlisting"> “argv” <a href="../glib-String-Utility-Functions.html#GStrv"><span class="type">GStrv</span></a></pre> |
| <p>Argument vector.</p> |
| <p>Flags: Write / Construct Only</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GSubprocess--flags"></a><h3>The <code class="literal">“flags”</code> property</h3> |
| <pre class="programlisting"> “flags” <a class="link" href="GSubprocess.html#GSubprocessFlags" title="enum GSubprocessFlags"><span class="type">GSubprocessFlags</span></a></pre> |
| <p>Subprocess flags.</p> |
| <p>Flags: Write / Construct Only</p> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="GSubprocess.see-also"></a><h2>See Also</h2> |
| <p><a class="link" href="GSubprocessLauncher.html" title="GSubprocess Launcher"><span class="type">GSubprocessLauncher</span></a></p> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr>Generated by GTK-Doc V1.25.1</div> |
| </body> |
| </html> |