作者TKyo (暗黑贵公子)
看板C_Sharp
标题Re: [问题] 关於Process要怎麽放入参数?
时间Fri Oct 31 01:03:09 2008
※ 引述《senjor (哞哞)》之铭言:
: 程式码如下
: {
: Process p = new Process();
: p.StartInfo.FileName = @"c:\svm\svm-predict.exe";
: p.StartInfo.Arguments = "train.svm train.model svm.out";
: p.StartInfo.UseShellExecute = false;
: p.StartInfo.RedirectStandardOutput = true;
: p.Start();
: p.WaitForExit();
: string s = p.StandardOutput.ReadToEnd();
: }
: 但是程式好像完全不理会我的参数(或者没有wait);
: 然後就直接跳过流程
: 但是如果没有参数的话照理来说s应该会是svm-predict.exe的help讯息
: 可是s却是空字串
: 让我怀疑是p没有做到WaitForExit的动作
: Process会有什麽不会wait的例外吗?
: 还是说我添加参数的方式错误?
WaitForExit() 是无限期等待 process 关闭後才会往下执行
而这时再读取 p.StandardOutput 会是空字串, 因为 process 已经结束
所以, 假设以同步方式来撰写, 要像底下这样, 拿掉 p.WaitForExit()
就能读取到该 process => stdio 的资料
p.Start();
string s = p.StandardOutput.ReadToEnd();
而 p.StandardOutput.ReadToEnd(); 这行是会等待 process => 丢资料 => stdio
--
私が生存への道は
今も未来も唯一つ
私自身の闇黑のためだ
即ち「ハ・ル・ヒ」
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.168.73
1F:推 senjor:话说拿掉还是一样不行...字串一样是空的...是不是某些exe 10/31 09:19
2F:→ senjor:是process控管不到的例外呢? 10/31 09:19
3F:推 senjor:找到解决方式了...利用cmd 下参数的方法... 10/31 10:12