Penguin
Annotated edit history of stderr(3) version 3, including all changes. View license author blame.
Rev Author # Line
1 perry 1 __NAME__
2
3 stdin, stdout, stderr - standard I/O streams
2 CraigBox 4
1 perry 5 __SYNOPSIS__
3 CraigBox 6 <verbatim>
2 CraigBox 7 #include <stdio.h>
1 perry 8 extern FILE stdin;
9 extern FILE stdout;
10 extern FILE stderr;
3 CraigBox 11 </verbatim>
2 CraigBox 12
1 perry 13 __DESCRIPTION__
14
15 Under normal circumstances every Unix program has three
16 streams opened for it when it starts up, one for input, one
17 for output, and one for printing diagnostic or error mes-
18 sages. These are typically attached to the user's terminal
19 (see tty(4)) but might instead refer to files or
20 other devices, depending on what the parent process chose to
21 set up. (See also the ``Redirection'' section of
22 sh(1) .)
23
24
2 CraigBox 25 The input stream is referred to as ``standard input''; the output stream is referred to as ``standard output''; and the error stream is referred to as ``standard error''. These terms are abbreviated to form the symbols used to refer to these files, namely __stdin__, __stdout__, and __stderr__.
1 perry 26
27
28 Each of these symbols is a stdio(3) macro of type
29 pointer to FILE, and can be used with functions like
30 fprintf(3) or fread(3).
31
32
33 Since FILEs are a buffering wrapper around Unix file
34 descriptors, the same underlying files may also be accessed
35 using the raw Unix file interface, that is, the functions
36 like read(2) and lseek(2). The integer
37 file descriptors associated with the streams stdin, stdout,
38 and stderr are 0, 1, and 2, respectively. The preprocessor
39 symbols STDIN_FILENO, STDOUT_FILENO, and STDERR_FILENO are
40 defined with these values in
41
42
43 Note that mixing use of FILEs and raw file descriptors can
44 produce unexpected results and should generally be avoided.
45 (For the masochistic among you: POSIX.1, section 8.2.3,
46 describes in detail how this interaction is supposed to
47 work.) A general rule is that file descriptors are handled
48 in the kernel, while stdio is just a library. This means for
49 example, that after an exec, the child inherits all open
50 file descriptors, but all old streams have become inaccessi-
51 ble.
52
53
54 Since the symbols stdin, stdout, and stderr are specified to
55 be macros, assigning to them is non-portable. The standard
56 streams can be made to refer to different files with help of
57 the library function freopen(3), specially
58 introduced to make it possible to reassign stdin, stdout,
59 and stderr. The standard streams are closed by a call to
60 exit(3) and by nor- mal program
61 termination.
2 CraigBox 62
1 perry 63 __SEE ALSO__
64
2 CraigBox 65 sh(1), csh(1), open(2), fopen(3), stdio(3)
1 perry 66
67 __CONSIDERATIONS__
68
69 The stream stderr is unbuffered. The stream stdout is
70 line-buffered when it points to a terminal. Partial lines
71 will not appear until fflush(3) or exit(3)
72 is called, or a newline is printed. This can produce
73 unexpected results, especially with debugging output. The
74 buffering mode of the standard streams (or any other stream)
75 can be changed using the setbuf(3) or
76 setvbuf(3) call. Note that in case stdin is
77 associated with a terminal, there may also be input
78 buffering in the terminal driver, entirely unrelated to
79 stdio buffering. (Indeed, normally terminal input is line
80 buffered in the kernel.) This kernel input handling can be
81 modified using calls like tcsetattr(3); see also
82 stty(1), and termios(3).
2 CraigBox 83
1 perry 84 __CONFORMING TO__
85
86 The stdin, stdout, and stderr macros conform to
2 CraigBox 87 ANSI X3.159-1989 (`` ANSI C''), and this standard also stipulates that these three streams shall be open at program startup.
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.

PHP Warning

lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 6 times)