Java Process Builder,程序进程启动但程序不使用CPU或内存

时间:2014-12-11 05:41:21

标签: java ubuntu terminal processbuilder

您好,并提前感谢, 我有以下问题:我有一个GUI和一个按钮,我需要启动一个在同一台机器上的c ++程序。该程序使用称为SSM(ROS like)的特定框架来共享数据。 程序本身从终端启动时工作正常,但是当我使用java进程构建器启动时,我无法访问任何数据,但我仍然可以看到该进程正在运行。

我使用的是Ubuntu 14.04和OpenJDK7。我使用的代码如下(根据评论更新):

ProcessBuilder builder = new ProcessBuilder(command);
builder.redirectOutput(Redirect.INHERIT);
builder.redirectError(Redirect.INHERIT);    
builder.start();

其中命令来自我通过UDP接收的一些数据:

command[0] = Main_gui.getHomePath()+"PFforAEV_autoCalib_20140418/PFforAEV0.2.2";
command[1] = String.valueOf(initialPosition[0]);
command[2] = String.valueOf(initialPosition[1]);
command[3] = String.valueOf(initialPosition[2]);
command[4] = "walllandmark_F41_20130125";

更具体地说,进程 PFforAEV0.2.2 正在运行,但似乎它不使用任何CPU或内存。我无法通过框架访问数据。看起来好像只是悬挂。

如果您需要更多详细信息,请询问。

有人能帮助我吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

您必须从子进程的stdout和stderr的InputStream中读取,或者将它们重定向到父进程的流:

ProcessBuilder builder = new ProcessBuilder(command);
builder.redirectOutput(Redirect.INHERIT);
builder.redirectError(Redirect.INHERIT);
builder.start();

请参阅此example