我试图让一个在 Mono(在 Ubuntu 上)上运行的 C# 程序调用 python 脚本,将数据发送到它的标准输入,并从它的标准输出读回数据。下面的测试代码抓住了基本思想:
var startInfo = new ProcessStartInfo("python");
startInfo.Arguments = "./hello.py";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
var p = Process.Start(startInfo);
if(p.HasExited)
return;
p.StandardInput.WriteLine("Bob");
var result = p.StandardOutput.ReadLine();
Console.WriteLine("Result: {0}", result);
hello.py 的代码很简单:
#!/usr/bin/python
line = raw_input()
while len(line) > 0:
print("Hello " + line)
line = raw_input()
当我在 .NET/Windows 上执行此测试代码时,上面的测试按预期工作,返回结果“Hello Bob”。但在 Mono/Linux 上,C# 程序挂起对p.StandardOutput.ReadLine();
. 知道为什么它不能在 Mono/Linux 上运行,以及我需要进行哪些更改才能使其正常运行吗?