Asmichi.ChildProcess 0.5.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package Asmichi.ChildProcess --version 0.5.2
NuGet\Install-Package Asmichi.ChildProcess -Version 0.5.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Asmichi.ChildProcess" Version="0.5.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Asmichi.ChildProcess --version 0.5.2
#r "nuget: Asmichi.ChildProcess, 0.5.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Asmichi.ChildProcess as a Cake Addin
#addin nuget:?package=Asmichi.ChildProcess&version=0.5.2

// Install Asmichi.ChildProcess as a Cake Tool
#tool nuget:?package=Asmichi.ChildProcess&version=0.5.2

Asmichi.ChildProcess

A .NET library that provides functionality for creating child processes. Easier, less error-prone, more flexible than System.Diagnostics.Process at creating child processes.

This library can be obtained via NuGet.

Build Status

Comparison with System.Diagnostics.Process

  • Concentrates on creating a child process and obtaining its output.
    • Cannot query status of a process.
  • More destinations of redirection:
    • NUL
    • File (optionally appended)
    • Pipe
    • Handle
  • Less error-prone default values for redirection:
    • stdin to NUL
    • stdout to the current stdout
    • stderr to the current stderr
  • Pipes are asynchronous; asynchronous reads and writes will be handled by IO completion ports.
  • Ensures termination of child processes

License

The MIT License

Supported Runtimes

  • .NET Core 3.1 or later

RIDs:

  • win10-x86 (Not tested)
  • win10-x64 (1803 or later)
  • win10-arm (Not tested)
  • win10-arm64 (Not tested)
  • linux-x64
  • linux-arm (Not tested)
  • linux-arm64 (Not tested)

NOTE: On Linux, the system must have GLIBC 2.x.y or later and LIBSTDCXX 3.x.y or later. Musl-based Linux (Alpine, etc.) is not currently supported.

Notes

  • When overriding environment variables, it is recommended that you include basic environment variables such as SystemRoot, etc.

Assumptions on Runtimes

This library assumes that the underlying runtime has the following characteristics:

  • Windows
    • The inner value of a SafeFileHandle is a file handle.
    • The inner value of a SafeWaitHandle is a handle that WaitForSingleObject can wait for.
    • The inner value of a SafeProcessHandle is a process handle.
  • *nix
    • The inner value of a SafeFileHandle is a file descriptor.
    • The inner value of a SafeProcessHandle is a process id.
    • Socket.Handle returns a socket file descriptor.

Limitations

  • More than 2^63 processes cannot be created.

Examples

See ChildProcess.Example for more examples.

Basic

var si = new ChildProcessStartInfo("cmd", "/C", "echo", "foo")
{
    StdOutputRedirection = OutputRedirection.OutputPipe,
};

using (var p = ChildProcess.Start(si))
{
    using (var sr = new StreamReader(p.StandardOutput))
    {
        // "foo"
        Console.Write(await sr.ReadToEndAsync());
    }
    await p.WaitForExitAsync();
    // ExitCode: 0
    Console.WriteLine("ExitCode: {0}", p.ExitCode);
}

Redirection to File

var si = new ChildProcessStartInfo("cmd", "/C", "set")
{
    StdOutputRedirection = OutputRedirection.File,
    StdOutputFile = "env.txt"
};

using (var p = ChildProcess.Start(si))
{
    await p.WaitForExitAsync();
}

// ALLUSERSPROFILE=C:\ProgramData
// ...
Console.WriteLine(File.ReadAllText("env.txt"));
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.1

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Asmichi.ChildProcess:

Package Downloads
OneWare.Essentials

Essentials Needed for One Ware Plugin Development

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.16.0 44 4/28/2024
0.15.0 114 3/16/2024
0.14.0 1,947 5/3/2023
0.13.0 604 6/19/2022
0.12.0 509 2/23/2022
0.11.0 518 9/14/2021
0.10.0 291 8/31/2021
0.9.0 320 7/28/2021
0.8.0 382 7/3/2021
0.7.0 316 6/8/2021
0.6.0 404 2/28/2021
0.5.2 364 2/23/2021
0.4.0 346 2/14/2021
0.3.0 434 11/25/2020
0.2.0 492 10/17/2020
0.1.0 627 5/1/2019