<Type Name="Process" FullName="GLib.Process">
  <TypeSignature Language="C#" Value="public class Process" />
  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Process extends System.Object" />
  <AssemblyInfo>
    <AssemblyName>glib-sharp</AssemblyName>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>Process class.</summary>
    <remarks>Methods for spawning child processes.</remarks>
  </Docs>
  <Members>
    <Member MemberName="Close">
      <MemberSignature Language="C#" Value="public void Close ();" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Close() cil managed" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Closes a process.</summary>
        <remarks>Processes spawned with <see cref="M:GLib.SpawnFlags.DoNotReapChild" /> must use this method to ensure zombie processes are not stranded.</remarks>
      </Docs>
    </Member>
    <Member MemberName="IgnorePipe">
      <MemberSignature Language="C#" Value="public const int IgnorePipe = 2147483647;" />
      <MemberSignature Language="ILAsm" Value=".field public static literal int32 IgnorePipe = (2147483647)" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <MemberValue>2147483647</MemberValue>
      <Docs>
        <summary>IgnorePipe field.</summary>
        <remarks>Pass this value to <see cref="M:GLib.Process.SpawnAsyncWithPipes" /> to ignore a pipe parameter.</remarks>
      </Docs>
    </Member>
    <Member MemberName="RequestPipe">
      <MemberSignature Language="C#" Value="public const int RequestPipe = 0;" />
      <MemberSignature Language="ILAsm" Value=".field public static literal int32 RequestPipe = (0)" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <MemberValue>0</MemberValue>
      <Docs>
        <summary>RequestPipe field.</summary>
        <remarks>Pass this value to <see cref="M:GLib.Process.SpawnAsyncWithPipes" /> to request a request a pipe descriptor be returned in the parameter.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SpawnAsync">
      <MemberSignature Language="C#" Value="public static bool SpawnAsync (string working_directory, string[] argv, string[] envp, GLib.SpawnFlags flags, GLib.SpawnChildSetupFunc child_setup, out GLib.Process child_process);" />
      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool SpawnAsync(string working_directory, string[] argv, string[] envp, valuetype GLib.SpawnFlags flags, class GLib.SpawnChildSetupFunc child_setup, class GLib.Process child_process) cil managed" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="working_directory" Type="System.String" />
        <Parameter Name="argv" Type="System.String[]" />
        <Parameter Name="envp" Type="System.String[]" />
        <Parameter Name="flags" Type="GLib.SpawnFlags" />
        <Parameter Name="child_setup" Type="GLib.SpawnChildSetupFunc" />
        <Parameter Name="child_process" Type="GLib.Process&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <param name="working_directory">The directory in which to execute the process, or <see langword="null" /> to use the current directory of the parent process.</param>
        <param name="argv">A string array containing the program name in the first element.</param>
        <param name="envp">An array of environment values in the form 'var=value', or <see langword="null" />.</param>
        <param name="flags">Process spawning configuration flags.</param>
        <param name="child_setup">A child process setup callback, or <see langword="null" />.</param>
        <param name="child_process">Returns the child process.</param>
        <summary>Spawns a child process asynchronously.</summary>
        <returns>A boolean value indicating spawning success.</returns>
        <remarks>
          <para>The method does not wait for the child process to complete before returning. This is a convenience method for the more detailed <see cref="M:GLib.Process.SpawnAsyncWithPipes" /> method. This method throws <see cref="T:GLib.GException" /> if an error occurs creating the process.</para>
          <para>
            <example>
              <code lang="C#">
...
try {
	GLib.Process proc;
	GLib.Process.SpawnAsync (null, new string[] {"echo", "[Async echo is running]"}, null, GLib.SpawnFlags.SearchPath, null, out proc);
} catch (GException e) {
	Console.WriteLine ("Exception in Spawn operation: " + e);
}
...
            </code>
            </example>
          </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="SpawnAsyncWithPipes">
      <MemberSignature Language="C#" Value="public static bool SpawnAsyncWithPipes (string working_directory, string[] argv, string[] envp, GLib.SpawnFlags flags, GLib.SpawnChildSetupFunc child_setup, out GLib.Process child_process, ref int stdin, ref int stdout, ref int stderr);" />
      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool SpawnAsyncWithPipes(string working_directory, string[] argv, string[] envp, valuetype GLib.SpawnFlags flags, class GLib.SpawnChildSetupFunc child_setup, class GLib.Process child_process, int32 stdin, int32 stdout, int32 stderr) cil managed" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="working_directory" Type="System.String" />
        <Parameter Name="argv" Type="System.String[]" />
        <Parameter Name="envp" Type="System.String[]" />
        <Parameter Name="flags" Type="GLib.SpawnFlags" />
        <Parameter Name="child_setup" Type="GLib.SpawnChildSetupFunc" />
        <Parameter Name="child_process" Type="GLib.Process&amp;" RefType="out" />
        <Parameter Name="stdin" Type="System.Int32&amp;" RefType="ref" />
        <Parameter Name="stdout" Type="System.Int32&amp;" RefType="ref" />
        <Parameter Name="stderr" Type="System.Int32&amp;" RefType="ref" />
      </Parameters>
      <Docs>
        <param name="working_directory">The directory in which to execute the process, or <see langword="null" /> to use the current directory of the parent process.</param>
        <param name="argv">A string array containing the program name in the first element.</param>
        <param name="envp">An array of environment values in the form 'var=value', or <see langword="null" />.</param>
        <param name="flags">Process spawning configuration flags.</param>
        <param name="child_setup">A child process setup callback, or <see langword="null" />.</param>
        <param name="child_process">Returns the spawned process.</param>
        <param name="stdin">Returns the stdin pipe descriptor if caller passes anything but <see cref="GLib.Process.IgnorePipe" />.</param>
        <param name="stdout">Returns the stdout pipe descriptor if caller passes anything but <see cref="GLib.Process.IgnorePipe" />.</param>
        <param name="stderr">Returns the stderr pipe descriptor if caller passes anything but <see cref="GLib.Process.IgnorePipe" />.</param>
        <summary>Spawns a child process and returns requested pipe descriptors.</summary>
        <returns>A boolean value indicating operation success.</returns>
        <remarks>
          <para>This method throws <see cref="T:GLib.GException" /> if an error occurs creating the process.</para>
          <para>
            <example>
              <code lang="C#">
using GLib;
using System;

public class SpawnTest  {

	public static void Main (string[] args)
	{
		new SpawnTest ();
	}

	MainLoop main_loop;
	IOChannel channel;

	public SpawnTest ()
	{
		main_loop = new MainLoop ();

		try {
			Process proc;
			int stdin = Process.IgnorePipe;
			int stdout = Process.RequestPipe;
			int stderr = Process.IgnorePipe;
			GLib.Process.SpawnAsyncWithPipes (null, new string[] {"pwd"}, null, SpawnFlags.SearchPath, null, out proc, ref stdin, ref stdout, ref stderr);
			channel = new IOChannel (stdout);
			channel.AddWatch (0, IOCondition.In | IOCondition.Hup, new IOFunc (ReadStdout));
		} catch (Exception e) {
			Console.WriteLine ("Exception in Spawn: " + e);
		}

		main_loop.Run ();
	}

	bool ReadStdout (IOChannel source, IOCondition condition)
	{
		if ((condition &amp; IOCondition.In) == IOCondition.In) {
			string txt;
			if (source.ReadToEnd (out txt) == IOStatus.Normal)
				Console.WriteLine ("[SpawnTest output] " + txt);
		}
		if ((condition &amp; IOCondition.Hup) == IOCondition.Hup) {
			source.Dispose ();
			main_loop.Quit ();
			return true;
		}
		return true;
	}
}
              </code>
            </example>
          </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="SpawnCommandLineAsync">
      <MemberSignature Language="C#" Value="public static bool SpawnCommandLineAsync (string command_line);" />
      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool SpawnCommandLineAsync(string command_line) cil managed" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="command_line" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="command_line">The command line with arguments.</param>
        <summary>Spawns a child process asynchronously.</summary>
        <returns>A boolean value indicating spawning success.</returns>
        <remarks />
        <remarks>
          <para>This method does not wait for the child process to complete before returning. It is a convenience method for the more detailed <see cref="M:GLib.Process.SpawnAsync" /> method.</para>
          <para>
            <example>
              <code lang="C#">
...
try {
	GLib.Process.SpawnCommandLineAsync ("echo \"[Async echo process running]\"");
} catch (GException e) {
	Console.WriteLine ("Exception in Spawn operation: " + e);
}
...
            </code>
            </example>
          </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="SpawnCommandLineSync">
      <MemberSignature Language="C#" Value="public static bool SpawnCommandLineSync (string command_line, out string stdout, out string stderr, out int exit_status);" />
      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool SpawnCommandLineSync(string command_line, string stdout, string stderr, int32 exit_status) cil managed" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="command_line" Type="System.String" />
        <Parameter Name="stdout" Type="System.String&amp;" RefType="out" />
        <Parameter Name="stderr" Type="System.String&amp;" RefType="out" />
        <Parameter Name="exit_status" Type="System.Int32&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <param name="command_line">The command line with arguments.</param>
        <param name="stdout">Returns the stdout output of the child process as a string.</param>
        <param name="stderr">Returns the stderr output of the child process as a string.</param>
        <param name="exit_status">Returns the exit code returned by the process.</param>
        <summary>Spawns a child process synchronously.</summary>
        <returns>A boolean value indicating spawning success.</returns>
        <remarks>
          <para>The method waits for the child process to complete prior to returning. This is a convenience method for the more detailed <see cref="M:GLib.Process.SpawnSync" /> method.</para>
          <para>
            <example>
              <code lang="C#">
...
try {
	string stdout, stderr;
	int exit_status;
	GLib.Process.SpawnCommandLineSync ("pwd", out stdout, out stderr, out exit_status);
	Console.Write ("pwd exit_status=" + exit_status + " output: " + stdout);
} catch (GException e) {
	Console.WriteLine ("Exception in Spawn operation: " + e);
}
...
            </code>
            </example>
          </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="SpawnSync">
      <MemberSignature Language="C#" Value="public static bool SpawnSync (string working_directory, string[] argv, string[] envp, GLib.SpawnFlags flags, GLib.SpawnChildSetupFunc child_setup, out string stdout, out string stderr, out int exit_status);" />
      <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool SpawnSync(string working_directory, string[] argv, string[] envp, valuetype GLib.SpawnFlags flags, class GLib.SpawnChildSetupFunc child_setup, string stdout, string stderr, int32 exit_status) cil managed" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="working_directory" Type="System.String" />
        <Parameter Name="argv" Type="System.String[]" />
        <Parameter Name="envp" Type="System.String[]" />
        <Parameter Name="flags" Type="GLib.SpawnFlags" />
        <Parameter Name="child_setup" Type="GLib.SpawnChildSetupFunc" />
        <Parameter Name="stdout" Type="System.String&amp;" RefType="out" />
        <Parameter Name="stderr" Type="System.String&amp;" RefType="out" />
        <Parameter Name="exit_status" Type="System.Int32&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <param name="working_directory">The directory in which to execute the process, or <see langword="null" /> to use the current directory of the parent process.</param>
        <param name="argv">A string array containing the program name in the first element.</param>
        <param name="envp">An array of environment values in the form 'var=value', or <see langword="null" />.</param>
        <param name="flags">Process spawning configuration flags.</param>
        <param name="child_setup">A child process setup callback, or <see langword="null" />.</param>
        <param name="stdout">Returns the stdout output of the child process as a string.</param>
        <param name="stderr">Returns the stderr output of the child process as a string.</param>
        <param name="exit_status">Returns the exit code of the child process.</param>
        <summary>Spawns a child process synchronously.</summary>
        <returns>A boolean value indicating spawning success.</returns>
        <remarks>
          <para>The method waits for the child process to complete prior to returning.</para>
          <para>
            <example>
              <code lang="C#">
...
try {
	string stdout, stderr;
	int exit_status;
	GLib.Process.SpawnSync ("/usr", new string[] {"pwd"}, null, GLib.SpawnFlags.SearchPath, null, out stdout, out stderr, out exit_status);
	Console.Write ("pwd exit_status=" + exit_status + " output: " + stdout);
} catch (GException e) {
	Console.WriteLine ("Exception in Spawn operation: " + e);
}
...
            </code>
            </example>
          </para>
        </remarks>
      </Docs>
    </Member>
  </Members>
</Type>
