当前位置: 首页 > 编程语言 > C#

在C#中读-写命令行程序Share

时间:2023-04-10 16:23:33 C#

在C#中读/写命令行程序我正在尝试与C#中的命令行程序交谈。它是一个情绪分析器。它是这样工作的:CMD>java-jaranalyzer.jar>Startinganalyzer...{这是我想从我的c#程序中插入内容的地方。例如:}我爱你!{并且程序响应-我想读这个}非常积极这是一些伪代码:Process.start("sentiment.exe");Process.writeline("我爱你");字符串Response=Process.readline();C#提供了哪些方法来写入进程的标准输入并从其标准输出读取?您要做的是“重定向”您正在启动的进程的标准输入和输出通道。这将允许您通过C#流读取和写入子进程。为此,您首先需要在用于启动子进程的ProcessStartInfo类中设置RedirectStandardInput和RedirectStandardOutput字段:Processp=newProcess();p.StartInfo.UseShellExecute=false;p.StartInfo.RedirectStandardInput=true;p.StartInfo.RedirectStandardOutput=true;p.StartInfo.FileName="其他程序.exe";p.开始();完成后,p.StandardInput和p.StandardOutput将成为附加到子进程输入和输出的StreamReader。根据子进程的确切输入和输出,您可能需要小心避免死锁(例如,一个程序在等待输出,而其他程序在等待输入)。为避免这种情况,您可以使用BeginOutputReadLine方法异步接收输出(如果需要)。这是一个小演示,展示了如何做你想做的事。这是一个仅从标准输入和回显读取标准输出的玩具命令行应用程序:安慰。WriteLine("回响:"+input);}}}这是另一个运行上述应用程序的命令行应用程序,向其传递输入并读取其输出:classProgram{staticvoidMain(string[]args){ProcessStartInfoprocessStartInfo=newProcessStartInfo();processStartInfo.CreateNoWindow=true;//重定向IO以允许我们读取和写入它。processStartInfo.RedirectStandardOutput=true;processStartInfo.RedirectStandardInput=true;processStartInfo.UseShellExecute=false;processStartInfo.FileName=@"pathtoyourEchoer.exe";流程process=newProcess();process.StartInfo=processStartInfo;过程。开始();整数计数器=0;while(如果您的托管应用程序不是简单地生成一行输出以响应一行输入,那么您可以使用Process.BeginOutputReadLine异步捕获输出(链接文档有示例代码)。这不是一个普遍的问题,但是一个特定的应用程序。我只是碰巧在做同样的事情......我们可能不应该在这里讨论这个,但请原谅我,我只是想帮忙。关键是您需要为jarvarprocessInfo=newProcessStartInfo("java.exe","-jarSentiStrengthCom.jarstdinsentidatadata201109/scale"){...}输入正确的参数,这是一个可行的解决方案//启动java服务器,可能在后台线程中voidbgw_DoWork(objectsender,DoWorkEventArgse){stringdirectory=...;//jar的目录varprocessInfo=newProcessStartInfo("java.exe","-jarSentiStrengthCom.jarstdinsentidatadata201109/scale"){//初始化“processInfo”的属性CreateNoWindow=true,UseShellExecute=false,WorkingDirectory=目录,RedirectStandardOutput=true,RedirectStandardError=true,RedirectStandardInput=true,};.StartInfo=processInfo;JavaSentiStrength.Start();Console.WriteLine("SentiStrengthComJava正在运行...");JavaSentiStrength.WaitForExit();int退出代码=0;如果(JavaSentiStrength!=null)exitCode=JavaSentiStrength.ExitCode;Debug.WriteLine("JavaSentiStrlengthCom倒闭了!"+exitCode);JavaSentiStrength.Close();JavaSentiStrength=null;}//点击一个按钮.ReadLine();Debug.WriteLine("SentiStrengthComoutput:"+s_out);}输出为SentiStrengthComoutput:3-12希望对你有帮助!以上是C#学习教程:读入c#/写出全部内容命令行程序分享,如果对你有用,需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如有涉及侵权,请点击维权联系管理员删除,如有转载请注明出处: