获取进程STDOUT - Mac OS X.

时间:2015-02-04 08:36:30

标签: java macos stdout

我制作了一个Mac OS X(本机)应用程序,它在STDOUT上写了一行。

在Java程序中,我需要启动该应用程序并获取它在标准输出上写的内容。

以下代码适用于Windows应用程序,但不适用于Mac OS X应用程序。

ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();
p.waitFor();
BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
result = is.readLine();

我做错了什么?

编辑:命令为open -W -n MyApp.app --args myargs

1 个答案:

答案 0 :(得分:2)

我不知道为什么它可以诚实地在Windows上运行。 waitFor将等待进程完成运行。那个时候stdout不再存在了。

你应该尝试切换waitFor调用和读取流。

编辑:我现在没有Mac测试,但我不确定open命令是否实际输出应用程序的stdout。您可能必须直接在.app包中启动二进制文件。大部分时间它都是MyApp.app/Contents/MacOS/myapp args