我有一个用 C++ 编写的控制台应用程序(使用 boost 库)并用 xcode 编译,这个 unix 可执行文件与守护程序通信并执行特定任务。当我使用所有参数从命令行运行此控制台应用程序时,它可以完美运行。但是当我从 Java 代码调用这个控制台应用程序时,它没有执行。我ProcessBuilder
用来执行它。能够使用相同的代码执行系统相关的命令。我正在使用的控制台应用程序取决于静态库。
以下是使用的规范:Jdk - 1.7、Mac OSX - 10.7.5、XCode - 4.6.2、Boost 版本 - 1.53.0。
我正在使用的代码:
String str[] = {"/bin/sh", "-c" ,"/Users/user/Downloads/cppapplication_1"};
ProcessBuilder builder = new ProcessBuilder(str);
builder.directory(new File("/Users/user/Downloads/"));
final Process process = builder.start();
process.waitFor();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
它没有抛出任何错误。它的悬挂。
任何帮助深表感谢。