Aller au contenu

« Process » : différence entre les versions

De Banane Atomic
Ligne 53 : Ligne 53 :


= Execute shell commands =
= Execute shell commands =
Some shell commands rewrite on the current line, to keep the same visual as the original command, use {{boxx|UseShellExecute = true}}.
Some shell commands rewrite on the current line, to keep the same visual as the original command, use {{boxx|1=UseShellExecute = true}}.
<kode lang=csharp>
<kode lang=csharp>
var processInfo = new ProcessStartInfo
var processInfo = new ProcessStartInfo

Version du 20 août 2023 à 20:23

Liens

Run a binary

using System.Diagnostics;

// in 1 line
Process.Start("/path/folder/binary", "arg1 arg2").WaitForExit();

// with ProcessStartInfo
Process.Start(new ProcessStartInfo("/path/folder/binary", "arg1 arg2")
{
    WindowStyle = ProcessWindowStyle.Hidden
})?.WaitForExit();

// read output and error
var process = Process.Start(new ProcessStartInfo("/path/folder/binary", "arg1 arg2")
{
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    UseShellExecute = false  // default value
});

string processOutput = process.StandardOutput.ReadToEnd();
process.WaitForExit();

// écoute d'output et d'error
command = command.Replace("\"", "\\\"");
var process = new Process()
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "/bin/bash",
        Arguments = $"-c \"{command}\"",
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        UseShellExecute = false,
        CreateNoWindow = true,
    }
};

process.OutputDataReceived += (a, b) => Console.WriteLine(b.Data);
process.ErrorDataReceived += (a, b) => Console.WriteLine(b.Data);

process.Start();
process.BeginErrorReadLine();
process.BeginOutputReadLine();

process.WaitForExit();
Le WorkingDirectory du nouveau process sera le même que celui du process appelant et non le chemin vers l'exe du nouveau process.

Execute shell commands

Some shell commands rewrite on the current line, to keep the same visual as the original command, use UseShellExecute = true.

var processInfo = new ProcessStartInfo
{
    FileName = "borg",
    Arguments = $"create --verbose --progress --stats --compression lz4 \"{archive}\"::{{now:%Y-%m-%d}} {paths}",
    UseShellExecute = true,
    WorkingDirectory = "/path/folder"
};
processInfo.EnvironmentVariables["BORG_PASSPHRASE"] = borgPassword;

var process = new Process()
{
    StartInfo = processInfo
};

process.Start();
process.WaitForExit();

Lister tous les processus qui utilisent un fichier