在 C# 中读取/写入命令行程序

2024-05-22

我正在尝试与 C# 的命令行程序进行对话。它是一个情绪分析器。它的工作原理如下:

CMD> java -jar analyser.jar

>Starting analyser...

{这是我想从我的 C# 程序插入内容的地方。例如:}

I love you!

{程序响应 - 我想读这个}

Very Positive

这是一些伪代码:

Process.start("sentiment.exe");
Process.writeline("I love you");
string Response = Process.readline();

C# 提供哪些方法来写入进程的标准输入并从其标准输出读取?


您想要做的是“重定向”您正在启动的进程的标准输入和输出通道。这将允许您通过 C# 流读取和写入子进程。

为此,您首先需要设置RedirectStandardInput http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput%28v=vs.110%29.aspx and RedirectStandardOutput http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput%28v=vs.110%29.aspx中的字段ProcessStartInfo用于启动子进程的类:

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "otherprogram.exe";
p.Start();

一旦完成,p.StandardInput and p.StandardOutputStreamReader附加到子进程的输入和输出。根据子进程的确切输入和输出,您可能需要小心避免死锁(例如,您的程序正在等待输出,而另一个程序正在等待输入)。为了避免这种情况,您可以使用BeginOutputReadLine http://msdn.microsoft.com/en-us/library/system.diagnostics.process.beginoutputreadline%28v=vs.110%29.aspx如果需要,异步接收输出的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中读取/写入命令行程序 的相关文章