加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – commons-exec:当我调用executor.execute(commandLine)

发布时间:2020-12-15 05:16:17 所属栏目:Java 来源:网络整理
导读:我不知道为什么会这样.我试图通过commons-exec捕获进程的输出,然后我继续挂起.我已经提供了一个示例程序来演示以下这种行为. import java.io.DataInputStream;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream
我不知道为什么会这样.我试图通过commons-exec捕获进程的输出,然后我继续挂起.我已经提供了一个示例程序来演示以下这种行为.

import java.io.DataInputStream;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
import org.apache.commons.exec.PumpStreamHandler;
public class test {

public static void main(String[] args) {
    String command = "java";

    PipedOutputStream output = new PipedOutputStream();
    PumpStreamHandler psh = new PumpStreamHandler(output);

    CommandLine cl = CommandLine.parse(command);

    DefaultExecutor exec = new DefaultExecutor();
    DataInputStream is = null;
    try {
        is = new DataInputStream(new PipedInputStream(output));
        exec.setStreamHandler(psh);
        exec.execute(cl);
    } catch (ExecuteException ex) {
    } catch (IOException ex) {
    }

    System.out.println("huh?");
}
}

解决方法

根据 javadoc,执行(CommandLine命令)是同步的,执行(CommandLine命令,ExecuteResultHandler处理程序)另一方面是异步的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读