Wierd problem in linux 2.4.18-bf2.4, Java Blackdown-1.4.2-rc1 (Solved)

Ronald Klop ronald-freebsd8 at klop.yi.org
Mon Jun 27 17:38:07 GMT 2005


On Mon, 27 Jun 2005 11:14:14 +0200, Achilleus Mantzios  
<achill at matrix.gatewaynet.com> wrote:

>
> Forgot my homework....
> A classic (lack of) consumption of output situation,
>
>> From the java docs:
>
>  The Runtime.exec methods may not work well for special processes on
> certain native platforms, such as native windowing processes, daemon
> processes, Win16/DOS processes on Microsoft Windows, or shell scripts.  
> The
> created subprocess does not have its own terminal or console. All its
> standard io (i.e. stdin, stdout, stderr) operations will be redirected to
> the parent process through three streams (Process.getOutputStream(),
> Process.getInputStream(), Process.getErrorStream()). The parent process
> uses these streams to feed input to and get output from the subprocess.
> Because some native platforms only provide limited buffer size for
> standard input and output streams, failure to promptly write the input
> stream or read the output stream of the subprocess may cause the
> subprocess to block, and even deadlock.
>
>
> Sorry for the noise, the situation can pretty well
> occur in FreeBSD too when pipe output buffer reaches its limit,
> and at the end of the day i think someone maybe will find this
> useful in the future.

I always create two threads to copy the output of stdout and stderr to  
some place. (/dev/null or a file or System.out). In java 5 you can combine  
stdout and stderr, so you only need 1 thread.



-- 
  Ronald Klop
  Amsterdam, The Netherlands


More information about the freebsd-java mailing list