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