在Java(或clojure)中,我想启动一个外部进程并将其stdout作为流进行消耗。理想情况下,我希望每次外部进程刷新其输出流时都能消耗该过程的输出流,但不确定如何实现以及如何在不阻塞的情况下实现它。
在处理外壳进程的Java
许多代码示例在无限循环中阻塞输出流,从而独占用于监听的线程。我希望完全避免这种阻塞行为。
底线是:
是否有一种非阻塞方式可以在输入流上被通知,每次生产方刷新时都会发生?
在处理外壳进程的Java
ProcessPipeInputStream
时(例如{{link1:Unix ProcessPipeInputStream}}),我发现继承的 InputStream
方法有点低级,难以使用,并且不确定是否有一种非阻塞方式可以每次从流中消耗生产者端刷新或以非阻塞方式进行其他操作。许多代码示例在无限循环中阻塞输出流,从而独占用于监听的线程。我希望完全避免这种阻塞行为。
底线是:
是否有一种非阻塞方式可以在输入流上被通知,每次生产方刷新时都会发生?