我正在使用C#Process
类启动Python进程。我想捕获它时,标准输出被重定向。除了崩溃以外,我都能正常获取标准输出。我们知道它将崩溃。 我们需要在标准输出崩溃时对其进行检查。一旦崩溃,我们将无法获得准确的标准输出。
当我在控制台中手动运行该脚本时,可以看到崩溃时的确切输出,但是当我使用>
运算符重定向标准输出时,输出未写入文件中,如果进程崩溃了。我怀疑如果进程崩溃,则不会刷新I / O缓冲区。这是真的?预先感谢。
var lastLineOfStdOut = null;
var p = new Process
{
StartInfo =
{
FileName = ... ,
Arguments = ... ,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
}
};
p.OutputDataReceived += (sender, e) =>
{
if (e.Data == null) return;
lastLineOfStdOut = e.Data;
Console.WriteLine(e.Data);
};
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
var exitCode = p.ExitCode; // Use this to figure out if it crashed