ILE C/C++ Programmer's Guide

Standard I/O Text Stream Files (<stdio.h>)

When a program that includes the <stdio.h> file starts, three text streams are defined:

Streams stdin, stdout, and stderr are implicitly opened the first time they are used.

Note:
These streams are not real iSeries Data Management files, but are simulated as files by the ILE C library routines. By default, they are directed to the terminal session.

Overriding Standard Output to the Terminal

The stdin, stdout, and stderr streams can be associated with other devices using the OS/400 override commands on the files stdin, stdout, and stderr respectively. If stdin, stdout, and stderr are used, and a file override is present on any of these streams prior to opening the stream, then the override takes effect, and the I/O operation may not go to the terminal.

If stdout or stderr are used in a non-interactive job, and if there are no file overrides for the stream, then the ILE C compiler overrides the stream to the printer file QPRINT. Output prints or spools for printing instead of displaying at your workstation.

Allowing a Program to Re-Read an Input File with QINLINE Specified

If stdin is specified (or the default accepted) for an input file that is not part of an interactive job, then the QINLINE file is used. You cannot re-read a file with QINLINE specified, because the database reader will treat it as an unnamed file, and therefore it cannot be read twice. You can avoid this by issuing an override. If you are reading characters from stdin, pressing F4 triggers the run time to end any pending input and to set the EOF indicator on. Pressing F3 is the same as calling exit() from your ILE C/C++ program.

If stdin is specified in batch and has no overrides associated with it, then QINLINE will be used. If stdin has overrides associated with it, then the override is used instead of QINLINE.

Note:
You can also use freopen() to reopen text streams. The stdout and stderr streams can be reopened for printer and database files. The stdin stream can be overridden only with database files. Using freopen() to redirect stdin/stdout/stderr from/to an IFS stream file is not supported on iSeries.


[ Top of Page | Previous Page | Next Page | Table of Contents ]