我试图在使用 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.ewp 2) -构建调试 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
关于c# - Process.StandardOutput.ReadToEnd() - 输出为空。从 cmd 运行相同的应用程序 - 输出正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368428/