抓住控制台输入输出 [英] Catch console input-output

查看:113
本文介绍了抓住控制台输入输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个控制台应用程序,从控制台读取输入和写入输出到控制台。我需要编写应该运行第一个,模拟控制台输入,并抢输出另一个程序。 ?能否请您提供调查这个问题的一种方式。



的控制台应用程序代码(很容易),例如:

 字符串输入=到Console.ReadLine(); 
int值= int.Parse(输入);
Console.WriteLine(值*值);


解决方案

您可以创建新的流程并为它指定的 StandardInput StandardOutput 属性。

 的ProcessStartInfo的ProcessStartInfo = 
新的ProcessStartInfo(executableName,executableParameter);
processStartInfo.UseShellExecute = FALSE;
processStartInfo.ErrorDialog = FALSE;
processStartInfo.RedirectStandardError = TRUE;
processStartInfo.RedirectStandardInput = TRUE;
processStartInfo.RedirectStandardOutput = TRUE;
工艺过程=新工艺();
process.StartInfo =的ProcessStartInfo;
布尔processStarted =的Process.Start();
的StreamWriter inputWriter = process.StandardInput;
StreamReader的outputReader = process.StandardOutput;
StreamReader的errorReader = process.StandardError;
//写入和读取使用inputWriter和outputReader过程控制台。
process.WaitForExit();


I have a console application that reads input from console and writes output to console. I need to write another program that should run the first one, mock the console input for it and grab the output. Can you please provide a way of investigation for this problem?

The (very easy) example of console application code:

string input = Console.ReadLine();
int value = int.Parse(input);
Console.WriteLine(value * value);

解决方案

You can create the new Process and assign it's StandardInput and StandardOutput properties.

ProcessStartInfo processStartInfo = 
  new ProcessStartInfo(executableName, executableParameter);
processStartInfo.UseShellExecute = false;
processStartInfo.ErrorDialog = false;
processStartInfo.RedirectStandardError = true;
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
Process process = new Process();
process.StartInfo = processStartInfo;
bool processStarted = process.Start();
StreamWriter inputWriter = process.StandardInput;
StreamReader outputReader = process.StandardOutput;
StreamReader errorReader = process.StandardError;
//Write and read process console using inputWriter and outputReader.
process.WaitForExit();

这篇关于抓住控制台输入输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆