The pre- and postprocessing perform all general tasks of I/O using streams. These tasks include
synchronizing several streams, checking whether the stream is OK, and skipping whitespaces, as
well as possibly implementation-specific tasks. For example, in a multithreaded environment, the
additional processing might be used for corresponding locking.