c******n 发帖数: 4965 | 1 is there an easy module to do the above?
for example, I want to read from the stdout and stderr of the same
Runtime.exec() |
h*****0 发帖数: 4889 | 2 自己写一个,太简单了。
从两个流“同时”读这一行为本身是定义不良的。你的需求我估计是不管
stdout或者stderr有什么内容反正显示出来就对了,就算顺序不对也没关系。
所以你用两个线程分别从stdout和stderr里读。没数据时两个线程都阻塞着,
一旦某个有数据,立即抢占“主流”。
如果你不马上显示的话,需要开足够的buffer。
【在 c******n 的大作中提到】 : is there an easy module to do the above? : for example, I want to read from the stdout and stderr of the same : Runtime.exec()
|
u****s 发帖数: 2186 | 3 一个thread里读stdout and stderr就可以
我们这的这一段code主要就是为了清Runtime.exec()的stdout/stderr buffer
【在 h*****0 的大作中提到】 : 自己写一个,太简单了。 : 从两个流“同时”读这一行为本身是定义不良的。你的需求我估计是不管 : stdout或者stderr有什么内容反正显示出来就对了,就算顺序不对也没关系。 : 所以你用两个线程分别从stdout和stderr里读。没数据时两个线程都阻塞着, : 一旦某个有数据,立即抢占“主流”。 : 如果你不马上显示的话,需要开足够的buffer。
|
c******n 发帖数: 4965 | 4 thread is of course easy, but kind of an overkill,
I , the above poster, and some online article I saw came up with exactly
the same code using threads
【在 u****s 的大作中提到】 : 一个thread里读stdout and stderr就可以 : 我们这的这一段code主要就是为了清Runtime.exec()的stdout/stderr buffer
|
h*****0 发帖数: 4889 | 5 一个thread读,阻塞了怎么办?
【在 u****s 的大作中提到】 : 一个thread里读stdout and stderr就可以 : 我们这的这一段code主要就是为了清Runtime.exec()的stdout/stderr buffer
|
u****s 发帖数: 2186 | 6 不会
【在 h*****0 的大作中提到】 : 一个thread读,阻塞了怎么办?
|
s******e 发帖数: 493 | 7 nio was designed to handle duplex. you can take a look there to see if there
is sth you need |
c******n 发帖数: 4965 | 8 thanks a lot, this is exactly what I am looking for
there
【在 s******e 的大作中提到】 : nio was designed to handle duplex. you can take a look there to see if there : is sth you need
|