如果进程崩溃,是否刷新该进程的标准输出?

时间:2019-09-04 11:30:32

标签: c# .net process io io-redirection

我正在使用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

0 个答案:

没有答案