Passing blocked I/O streams

For blocked I/O, all reads and writes made by the called program occur at the next block boundary. Because complete blocks are always read and written, there is no change in the file position across a system() call boundary.

If freopen() is applied to a C standard stream, creating a stream with type=blocked, then behavior of the associated I/O stream is undefined across a system() call.