12.21.2 Programming Your Own Custom Streams
This section describes how you can make a stream that gets input from an
arbitrary data source or writes output to an arbitrary data sink
programmed by you. We call these custom streams. The functions
and types described here are all GNU extensions.