On Montag, 3. Juli 2017 20:38:45 CEST John E. Malmberg wrote:
> On 7/3/2017 7:58 PM, Bruno Haible wrote:
> > John E. Malmberg wrote:
> >> The OpenVMS Mailboxes work for data up to about 65K and then have buffer
> >> full problems.
> >> ...
> >> For Bash and Coreutils, I have a close to a pipe replacement that uses a
> >> slightly different API in that you have to know if the pipe is parent to
> >> child or child to parent when you create the pipes.  This handles pipes
> >> up to the amount of virtual memory available to the process.

> Until I changed the OpenVMS GNV Bash port to use my replacement pipe 
> code, I could not run most configure scripts as something would write 
>  >65 KB of data into a pipe that did not yet have anything reading from 
> it, and then everything would stop.

This is a good intermediate achievement. But still, even with bash, it is
frequent to have pipes between brethren processes:
  $ (cd dir1 && command1) | (cd dir2 && command2)

> With unidirectional channels to the mailbox it is trivial for the parent 
> to monitor the child's reading and writing or if there even is a child 
> connected.
> 
> With bi-directional channels it is not possible at all.

Then you need a pipe() emulation that is based on unidirectional channels.

> The developers that mapped the pipe API to the Mailbox API used 
> bi-directional channels instead of unidirectional channels.

Then you need to redo/override this implementation of pipe() with a better
one.

Bruno


Reply via email to