Process.StandardOutput.ReadToEnd()-输出为空.从cmd-output运行相同的应用程序
本文关键字:运行 cmd-output 应用程序 ReadToEnd StandardOutput 输出 Process | 更新日期: 2023-09-27 18:19:30
在使用IarBuild.exe
实用程序(用于构建项目的IAR
cmd实用程序)构建项目时,我正在尝试获取输出我使用的是一个简单的IronPython
脚本:
process = System.Diagnostics.Process()
process.StartInfo.FileName = path_process
process.StartInfo.Arguments = command_line_arguments
process.StartInfo.RedirectStandardError = True
process.StartInfo.RedirectStandardOutput = True
process.StartInfo.RedirectStandardInput = True
process.StartInfo.UseShellExecute = False
process.StartInfo.CreateNoWindow = True
process.Start()
output = process.StandardOutput.ReadToEnd()
process.WaitForExit()
return {"Exit code": process.ExitCode, "Output": output}
在我的情况下,"Output"总是空的("StandardError"也是空的)。如果我尝试在命令行("cmd.exe")中执行相同的应用程序,则会成功显示输出。
也许这个问题与某些操作系统设置(或其他安装的应用程序所做的更改)有关,因为当我尝试在其他虚拟机(相同的操作系统)上执行相同的脚本时,Process.StandardOutput.ReadToEnd()
是可以的。
当我使用"subprocess.call()"方法而不是"System.Diagnostics.Process()"时,我会得到相同的结果
当你传递参数时。看起来你传递了三个参数:
1) C:''test''test.ewp2) -生成调试3) -日志信息但它们被认为是6个自变量,因为它们包含空格。
使用
command_line_arguments = "'"C:''test''test.ewp'" '"-build Debug'" '"-log info'""
我可能错了。如需进一步参考,请参阅https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.arguments(v=vs.110).aspx