C# 重定向的问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 03:30:39
不知道问题是否贴切!麻烦各位高手看看:

我有段程序要调用别人写的一个算法exe
调用算法有输入、输出和一堆参数,
比如: "apriori.exe input.dat 3 3 output.dat"

我想在我的程序里调用它 正常情况就生成输入文件 调用以后再读它的输出文件,可我现在不想让输入输出显式地生成,最好放在内存里做就好了..

不知道是否可行,怎么做,求教各位高手,最好详细一点~~谢谢~~
input.dat output.dat是两个文本文件,就是想让这两个文本文件不在硬盘上也能执行apriori.exe

貌似不行,除非你能修改apriori的源代码...

你需要了解两个类
Process 包容一个进程
ProcessStartInfo 启动一个进程的信息

var psi = new ProcessStartInfo("apriori.exe");
psi.Arguments = "input.dat 3 3 output.dat";

//不使用壳来执行进程,才能捕获输入输出流
psi.UseShellExecute = false;
//重定向输入流
psi.RedirectStandardInput = true;
//重定向输出流
psi.RedirectStandardOutput = true;

var p = Process.Start(psi);

//获取输入流的操作Writer
StreamWriter input = p.StandardInput;
//获取进程的输出流
StreamReader output = p.StandardOutput;

你可以通过input来向进程输入,就好像他们是从控制台打入的一样
而output则好像你是进程里的Console一样,可以读取程序输出

希望能帮到你,谢谢

用System.Diagnostics.ProcessStartInfo装载apriori.exe
设置RedirectStandardOutput属性true,
然后用System.Diagnostics.Process.Start启动刚才的ProcessStartInfo
将返回值System.Diagnostics.Process的StartOutput属性赋值给StreamReader,然后WaitForExit()即可。
StreamReader中未读数据就是输出结果。

应该是不行的