java - 获取进程 STDOUT - Mac OS X

标签 java macos stdout

我制作了一个 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/

相关文章:

java - 为什么 showSoftInput 不显示虚拟键盘?

java - 是否有任何 JavaFX gui 生成器?

swift - Appkit:如何在本地文件夹上执行 NSMetadataQuery

java - 没有 Final 关键字的静态字段需要 RealTimeExample

android - 为 android 编译 SDL 时找不到 ifaddrs.h header

macos - Mac OSX 终端 : how to fade old commands and stdout?

java - 从 python 到 java 的管道输入

c - 如何从 C 中的标准输出读取

node.js - 如何使用 Node.js 响应命令行提示符

java - 如何在 JPA2 中强制使用 @ManyToOne 字段?