获取进程 STDOUT - Mac OS X
Getting process STDOUT - Mac OS X
我制作了一个 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
老实说,我不知道为什么它在 Windows 上有效。 waitFor 将等到过程完成 运行。那时进程的标准输出不再存在。
您应该尝试切换 waitFor 调用和流的读取。
编辑:我现在没有 Mac 来测试它,但我不确定 open
命令是否实际输出应用程序的标准输出。您可能必须直接在 .app 包中启动二进制文件。大多数时候,它类似于 MyApp.app/Contents/MacOS/myapp args
我制作了一个 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
老实说,我不知道为什么它在 Windows 上有效。 waitFor 将等到过程完成 运行。那时进程的标准输出不再存在。
您应该尝试切换 waitFor 调用和流的读取。
编辑:我现在没有 Mac 来测试它,但我不确定 open
命令是否实际输出应用程序的标准输出。您可能必须直接在 .app 包中启动二进制文件。大多数时候,它类似于 MyApp.app/Contents/MacOS/myapp args