gpt4 book ai didi

c# - 重定向标准输出

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:36 26 4
gpt4 key购买 nike

我有一个 C# 应用程序 A,它调用另一个 C# 应用程序 B,后者调用应用程序 C 的多个实例。

我想将应用程序 C 的输出重定向到应用程序 A 的输出。

我已经将应用程序 B 的输出重定向到应用程序 A 的输出。

现在,在应用程序 B 的代码中,我正在重定向每个进程的输出,并将重定向的输出打印到控制台。不幸的是,出于某种原因,没有打印任何内容。

(我目前在不使用应用程序 A 的情况下对其进行测试 - 我只运行应用程序 B)。

代码如下:

private void runSingleFile (string execFile, string commandArgs)
{
Process processToRun = new Process();
processToRun .StartInfo.FileName = execFile;
processToRun .StartInfo.Arguments = commandArgs;
processToRun .StartInfo.UseShellExecute = false;
processToRun .StartInfo.RedirectStandardOutput = true;
processToRun .OutputDataReceived += outputRedirection;
processToRun.Start();
Console.WriteLine("");
Thread.Sleep(100);
processToRun.BeginOutputReadLine();
}

private void outputRedirection(object sendingProcess, DataReceivedEventArgs outLine)
{
try
{
if (outLine.Data != null)
Console.WriteLine(outLine.Data);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return;
}
}

有什么想法吗?

最佳答案

.net Process 对象在正确处理 IO 方面并不容易“做正确的事”。

这些页面列出了一些需要处理的问题:

根据您的代码示例,以下是您需要查看的一些项目:

  1. 您需要捕获 stderr 和 stdin(如果不使用后者应立即关闭)。
  2. 您还需要注意,在子进程退出后您仍然可以在 outputRedirection 回调中接收事件。

关于c# - 重定向标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20887266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com