无法在实时过程中从InputStream读取数据

时间:2019-06-18 09:06:58

标签: java process inputstream nio

我正在使用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();
} 

0 个答案:

没有答案