« Process » : différence entre les versions
Apparence
Aucun résumé des modifications |
|||
(7 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 2 : | Ligne 2 : | ||
* [https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.110).aspx ProcessStartInfo] | * [https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.110).aspx ProcessStartInfo] | ||
= | = Run a binary = | ||
{{info | By default the {{boxx|WorkingDirectory}} is the calling directory.}} | |||
<kode lang=csharp> | <kode lang=csharp> | ||
using System.Diagnostics; | using System.Diagnostics; | ||
// | // in 1 line | ||
Process.Start(" | Process.Start("/path/folder/binary", "arg1 arg2").WaitForExit(); | ||
// ProcessStartInfo | // with ProcessStartInfo | ||
Process.Start(new 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(); | string processOutput = process.StandardOutput.ReadToEnd(); | ||
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.ErrorDataReceived += (a, b) => Console.WriteLine(b.Data); | |||
process.BeginErrorReadLine(); | |||
process.BeginOutputReadLine(); | |||
process.WaitForExit(); | |||
</kode> | |||
= Execute shell commands = | |||
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> | |||
var process = new Process() | var process = new Process() | ||
{ | { | ||
StartInfo = new ProcessStartInfo | StartInfo = new ProcessStartInfo | ||
{ | { | ||
FileName = " | FileName = "borg", | ||
Arguments = $"- | Arguments = $"create --verbose --progress --stats --compression lz4 \"{archive}\"::{{now:%Y-%m-%d}} {paths}", | ||
UseShellExecute = true, | |||
WorkingDirectory = "/path/folder" | |||
} | } | ||
}; | }; | ||
// set env var | |||
process. | process.StartInfo.EnvironmentVariables["BORG_PASSPHRASE"] = borgPassword; | ||
process.Start(); | process.Start(); | ||
process.WaitForExit(); | process.WaitForExit(); | ||
</kode> | </kode> | ||
= Lister tous les processus qui utilisent un fichier = | = Lister tous les processus qui utilisent un fichier = |
Dernière version du 27 août 2023 à 10:48
Liens
Run a binary
![]() |
By default the WorkingDirectory is the calling directory. |
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();
|
Execute shell commands
Some shell commands rewrite on the current line, to keep the same visual as the original command, use UseShellExecute = true.
var process = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = "borg",
Arguments = $"create --verbose --progress --stats --compression lz4 \"{archive}\"::{{now:%Y-%m-%d}} {paths}",
UseShellExecute = true,
WorkingDirectory = "/path/folder"
}
};
// set env var
process.StartInfo.EnvironmentVariables["BORG_PASSPHRASE"] = borgPassword;
process.Start();
process.WaitForExit();
|
Lister tous les processus qui utilisent un fichier
|