Hi Akim,

> We, at Bison Corp., have some bug occurring on Tru64 
> (http://lists.gnu.org/archive/html/bug-bison/2009-06/msg00004.html 
> ) that seems to be related with our piping into GNU M4.  Bison  
> basically reads its input, feeds m4 with various files, and "parses"  
> the output of m4 before producing the expected files.

Such piping, where you write from the current process and read into
the current process, may hang on BSD systems, because some data is
present in system buffers but the system wants the buffers to be full
before it continues. A fix for this hang is to enable non-blocking I/O
and use a loop with select() that alternately reads and writes. See
<http://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=gettext-tools/src/msgfilter.c;hb=HEAD#l580>

Bruno


Reply via email to