The procedures in this proposal start a new operating system process and return a binary port (remember, binary ports can do character I/O as well) connected to either the standard input (for an output port) or the standard output (for an input port) of the new process. There is no support for input/output process ports, though an implementation could add them as an extension.
This module depends on the acceptance of PortsCowan or something like it, as it uses the framework of that proposal.
(open-input-process filename)
(open-output-process filename)
(call-with-input-process filename proc)
(call-with-output-process filename proc)
(with-input-from-process filename thunk)
(with-output-to-process filename thunk)
All of these are equivalent to the corresponding R5RS functions on file ports. If filename is a string, it is a shell command suitable for passing to shell-command. If it is a list, it is a settings list as described in PortsCowan. Implementations MUST support the keys described in PortsCowan (where path is the system command to be executed), plus the following additional keys: