MODULEPipePosix EXPORTSPipe ; IMPORT Ctypes, FilePosix, OSError, OSErrorPosix, Unix; PROCEDUREOpen (VAR hr, hw: T) RAISES {OSError.E} = VAR fd: ARRAY [0..1] OF Ctypes.int; BEGIN IF Unix.pipe(fd) < 0 THEN OSErrorPosix.Raise() END; hr := FilePosix.NewPipe(fd := fd[Unix.readEnd], ds := FilePosix.Read); hw := FilePosix.NewPipe(fd := fd[Unix.writeEnd], ds := FilePosix.Write) END Open; BEGIN END PipePosix.