我正在使用ProcessBuilder从Java执行Shell命令。我的shell命令是一个实用程序,一旦被调用,它始终运行。 尝试使用InputStream读取命令输出,因为它是实时进程read()阻塞。 尝试创建辅助线程以供读取。但是read()永远不会回来。
public static void main(String[] args) {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("bash", "-c", "<my utility start command>");
Process ps = processBuilder.start(); ReadableByteChannel inputChannel = Channels.newChannel(ps.getInputStream()); ByteBuffer byteBuffer =
ByteBuffer.allocate(1024); Charset charset = Charset.forName("US-ASCII"); while (inputChannel.read(byteBuffer) > 0) { byteBuffer.rewind();
System.out.print(charset.decode(byteBuffer)); byteBuffer.flip();
}