从bash进程、java获取持续反馈

从bash进程、java获取持续反馈,java,linux,bash,Java,Linux,Bash,要从java在bash中执行进程/命令,可以使用以下类: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Arrays; public class CmdExecutor { public CmdExecutor(){ } public voi

要从java在bash中执行进程/命令,可以使用以下类:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;

public class CmdExecutor {
    public CmdExecutor(){

    }
    public void exe(String [] args) throws IOException{
            if (args.length <= 0) {
                System.out.println("empty command");
                return;
            }

           Process process = new ProcessBuilder(args).start();
           InputStream is = process.getInputStream();
           InputStreamReader isr = new InputStreamReader(is);
           BufferedReader br = new BufferedReader(isr);

           String line;
           System.out.printf("Output of running %s is:", 
              Arrays.toString(args));

           while ((line = br.readLine()) != null) {
             System.out.println(line);
           }
    }
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.util.array;
公共类CmdExecutor{
公共CmdExecutor(){
}
public void exe(字符串[]args)引发IOException{
如果(args.length签出

您可能希望有一个线程(生产者)读取进程输出,并将其放入LinkedBlockingQueue(
queue.put
),然后有另一个线程(使用者)从队列(
queue.poll
)获取元素并处理它