Date: Wed, 29 Jun 2005 00:51:26 +0200 From: "Ronald Klop" <ronald-freebsd8@klop.yi.org> To: "Achilleus Mantzios" <achill@matrix.gatewaynet.com> Cc: freebsd-java@freebsd.org Subject: Re: Wierd problem in linux 2.4.18-bf2.4, Java Blackdown-1.4.2-rc1 (Solved) Message-ID: <op.ss3q30v18527sy@outgoing.local> In-Reply-To: <Pine.LNX.4.44.0506280924160.13307-100000@matrix.gatewaynet.com> References: <Pine.LNX.4.44.0506280924160.13307-100000@matrix.gatewaynet.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 28 Jun 2005 08:25:12 +0200, Achilleus Mantzios <achill@matrix.gatewaynet.com> wrote: > O Ronald Klop έγραψε στις Jun 27, 2005 : > >> On Mon, 27 Jun 2005 11:14:14 +0200, Achilleus Mantzios >> <achill@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. >> > > Right, altho doing >> dev/null 2>&1 > in the script itself, saves the extra code. I know scripting. We were talking about Java. Coding in java expecting a script is doing something you like is not failsafe. -- Ronald Klop Amsterdam, The Netherlands
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?op.ss3q30v18527sy>