A Racket pipe is internal to Racket, and not related to OS-level pipes for communicating between different processes.OS-level pipes may be created by subprocess, opening an existing named file on a Unix filesystem, or starting Racket with pipes for its original input, output, or error port. Such pipes are file-stream ports, unlike the pipes produced by make-pipe.
(make-pipe [limit input-name output-name])
input-port? output-port? limit : exact-positive-integer? = #f input-name : any/c = 'pipe output-name : any/c = 'pipe
If limit is #f, the new pipe holds an unlimited number of unread bytes (i.e., limited only by the available memory). If limit is a positive number, then the pipe will hold at most limit unread/unpeeked bytes; writing to the pipe’s output port thereafter will block until a read or peek from the input port makes more space available. (Peeks effectively extend the port’s capacity until the peeked bytes are read.)
The optional input-name and output-name are used as the names for the returned input and output ports, respectively.