« Process » : différence entre les versions
Apparence
Ligne 15 : | Ligne 15 : | ||
})?.WaitForExit(); | })?.WaitForExit(); | ||
// read output and error | // read synchronously output and error | ||
var process = Process.Start(new ProcessStartInfo("/path/folder/binary", "arg1 arg2") | var process = Process.Start(new ProcessStartInfo("/path/folder/binary", "arg1 arg2") | ||
{ | { | ||
Ligne 26 : | Ligne 26 : | ||
process.WaitForExit(); | process.WaitForExit(); | ||
// | // read asynchronously output and error | ||
var process = Process.Start(new ProcessStartInfo("/path/folder/binary", "arg1 arg2") | |||
{ | { | ||
RedirectStandardOutput = true, | |||
RedirectStandardError = true, | |||
UseShellExecute = false // default value | |||
}); | |||
}; | |||
process.OutputDataReceived += (a, b) => Console.WriteLine(b.Data); | process.OutputDataReceived += (a, b) => Console.WriteLine(b.Data); | ||
process.ErrorDataReceived += (a, b) => Console.WriteLine(b.Data); | process.ErrorDataReceived += (a, b) => Console.WriteLine(b.Data); | ||
process.BeginErrorReadLine(); | process.BeginErrorReadLine(); | ||
process.BeginOutputReadLine(); | process.BeginOutputReadLine(); | ||
process.WaitForExit(); | process.WaitForExit(); | ||
</kode> | </kode> | ||
{{warn | Le WorkingDirectory du nouveau process sera le même que celui du process appelant et non le chemin vers l'exe du nouveau process.}} | {{warn | Le WorkingDirectory du nouveau process sera le même que celui du process appelant et non le chemin vers l'exe du nouveau process.}} |
Version du 20 août 2023 à 20:27
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 synchronously 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();
// read asynchronously output and error
var process = Process.Start(new ProcessStartInfo("/path/folder/binary", "arg1 arg2")
{
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false // default value
});
process.OutputDataReceived += (a, b) => Console.WriteLine(b.Data);
process.ErrorDataReceived += (a, b) => Console.WriteLine(b.Data);
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
|