c# - Process.StandardOutput.ReadToEnd() - 输出为空。从 cmd 运行相同的应用程序 - 输出正常

标签 c# ironpython iar

我试图在使用 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/

相关文章:

c# - 如何从 Google 云端硬盘下载文件

c# - NHibernate 多对多关系表中的附加字段

c# - 从 IronPython 脚本访问主机类

c - 为什么使用指针(低优化)会使程序更快?

c# - 从 DataGrid 中删除空格

c# - 如何在 asp :DropDownList 中默认选择值

python - Visual Studio - "The environment IronPython|2.7-32 appears to be incorrectly configured or missing"

c# - 如何在 IronPython 中引用已编译的 Python 代码?

assembly - 在汇编宏中创建循环 - IAR ARM

CMake:使用两个不同的编译器进行交叉编译,但源代码相同