Process¶
Represents a Linux process in a container.
using Windows.Storage.Streams;
public sealed class Process
{
public uint Pid { get; }
public ProcessState State { get; }
public int ExitCode { get; }
public event ProcessOutputHandler OutputReceived;
public event ProcessOutputHandler ErrorReceived;
public event ProcessExitHandler Exited;
public void Start();
public void Signal(Signal signal);
public IInputStream GetOutputStream(ProcessOutputHandle outputHandle);
public IOutputStream GetInputStream();
}
Notes:
- Call Start() only for secondary processes created by Container.CreateProcess(...).
- The init process is started by Container.Start().
- OutputReceived and ErrorReceived require OutputMode.Event.
- GetOutputStream(...) requires OutputMode.Stream.
- Exited is available for all output modes.
Process.Start()¶
Starts a secondary process.
Process.Signal(Signal)¶
Signals the process.
Process.GetOutputStream(ProcessOutputHandle)¶
Gets stdout or stderr as a WinRT input stream.
using Windows.Storage.Streams;
using IInputStream stdout = process.GetOutputStream(ProcessOutputHandle.StandardOutput);
using var reader = new DataReader(stdout);
await reader.LoadAsync(4096);
string text = reader.ReadString(reader.UnconsumedBufferLength);
Console.WriteLine(text);
Process.GetInputStream()¶
Gets stdin as a WinRT output stream.
using Windows.Storage.Streams;
using IOutputStream stdin = process.GetInputStream();
using var writer = new DataWriter(stdin);
writer.WriteString("hello from C#\n");
await writer.StoreAsync();
await writer.FlushAsync();
Process.Pid¶
Process.State¶
Process.ExitCode¶
Valid after exit.
Process.OutputReceived event¶
Process.ErrorReceived event¶
using System.Text;
process.ErrorReceived += data =>
Console.Error.Write(Encoding.UTF8.GetString(data));