我制作了一个 Mac OS X( native )应用程序,在 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
最佳答案
说实话,我不知道为什么它能在 Windows 上运行。 waitFor 将等待进程完成运行。那时,进程的标准输出不再存在。
您应该尝试切换 waitFor 调用和流的读取。
编辑:我现在没有 Mac 来测试它,但我不确定 open
命令是否实际输出应用程序的标准输出。您可能必须直接启动 .app 包内的二进制文件。大多数时候它类似于 MyApp.app/Contents/MacOS/myapp args
关于java - 获取进程 STDOUT - Mac OS X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28316860/