File: stdin.3

package info (click to toggle)
manpages-es 1.24a-6
  • links: PTS
  • area: main
  • in suites: potato
  • size: 4,256 kB
  • ctags: 7
  • sloc: makefile: 66; sh: 62
file content (135 lines) | stat: -rw-r--r-- 4,122 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
.\" From dholland@burgundy.eecs.harvard.edu Tue Mar 24 18:08:15 1998
.\"
.\" This man page was written in 1998 by David A. Holland
.\" and placed in the Public Domain. Polished a bit by aeb.
.\"
.\" Translated 05 Sep 1998 by Carlos Costa Portela (c.c.portela@ieee.org)
.\" Translation revised Sat Oct 3 1998 by Juan Piernas <piernas@ditec.um.es>
.\"
.Dd 24 Marzo 1998
.Dt STDIN 3
.Os "Linux 2.0"
.Sh NAME
.Nm stdin ,
.Nm stdout ,
.Nm stderr
.Nd flujos de la E/S estndar
.Sh SYNOPSIS
.Fd #include <stdio.h>
.Fd extern FILE *stdin;
.Fd extern FILE *stdout;
.Fd extern FILE *stderr;
.Sh DESCRIPCIN
Bajo condiciones normales cualquier programa Unix tiene tres flujos de E/S
abiertos cuando arranca: uno para la entrada, otro para la salida y otro para
imprimir los diagnsticos o mensajes de error. Estos flujos estn tpicamente
ligados al terminal de usuario (ver
.Xr tty 4 )
pero podran referirse a ficheros o a otros dispositivos, segn lo que
decida el proceso padre. (Ver tambin la seccin "Redireccin" de
.Xr sh 1 .)
.Pp
El flujo de entrada se conoce como "entrada estndar"; el flujo de salida como
"salida estndar"; y el flujo de error como "error estndar". Estos trminos
se abrevian para formar los smbolos utilizados para referirse a esos ficheros,
esto es,
.Nm stdin ,
.Nm stdout
y
.Nm stderr .
.Pp
Cada uno de estos smbolos es una macro de
.Xr stdio 3
del tipo "puntero a FILE" y pueden ser utilizados por funciones como
.Xr fprintf 3
o
.Xr fread 3 .
.Pp
Ya que los FILEs son un envoltorio con bffer sobre los descriptores de fichero
de Unix, los mismos ficheros subyacentes pueden ser accedidos tambin
utilizando el interface crudo (raw) de ficheros de Unix, es decir, las funciones como
.Xr read 2
y
.Xr lseek 2 . 
Los descriptores de fichero asociados con los flujos
.Nm stdin ,
.Nm stdout
y
.Nm stderr
son 0, 1 y 2, respectivamente. Los smbolos del preprocesador STDIN_FILENO,
STDOUT_FILENO y STDERR_FILENO son definidos con esos valores en
<unistd.h>.
.Pp
Es necesario tener en cuenta que la mezcla de FILEs y descriptores de fichero
crudos puede producir resultados inesperados y se debera evitar.
(Para los masoquistas: POSIX.1, section 8.2.3, describe en detalle cmo se
supone que funciona esta interaccin).
Una regla general es que los descriptores de fichero son gestionados por el
ncleo, mientras que stdio es una simple librera. Esto significa, por ejemplo,
que tras un exec, el hijo hereda todos los descriptores de ficheros
abiertos, pero los flujos antiguos se hacen inaccesibles.
.Pp
Ya que los smbolos
.Nm stdin ,
.Nm stdout
y
.Nm stderr
son especificados como macros, las asignaciones a ellos no son portables.
Se puede hacer que los flujos estndares referencien a otros ficheros con
ayuda de la funcin de librera
.Xr freopen 3 ,
introducida especialmente para hacer posible reasignar
.Nm stdin ,
.Nm stdout
y
.Nm stderr .
Los flujos estndares se cierran llamando a 
.Xr exit 3
y por la terminacin normal del programa.
.Sh VASE TAMBIN
.Xr sh 1 ,
.Xr csh 1 ,
.Xr open 2 ,
.Xr fopen 3 ,
.Xr stdio 3
.Sh CONSIDERACIONES
El flujo
.Nm stderr
no utiliza bffers. El flujo
.Nm stdout
tiene un bffer de lneas cuando apunta a un terminar. Las lneas no aparecen
hasta que se llama a
.Xr fflush 3
o a 
.Xr exit 3
, o se imprime una nueva lnea ("\\n"). Esto puede producir resultados
inesperados, especialmente en depuracin.
El modo "buffer" de los flujos estndares (o de cualquier otro flujo) se puede
cambiar con llamadas a
.Xr setbuf 3
o
.Xr setvbuf 3
.
Es necesario tener en cuenta que en caso de que
.Nm stdin
est asociado con un terminal, podra haber tambin entrada va buffer en el
driver del terminal, sin relacin alguna con el bffer de stdio.
(De hecho, las entradas normales de terminal utilizan un bffer de lneas en
el ncleo).
Esta gestin de entradas del ncleo puede ser modificada utilizando llamadas
como
.Xr tcsetattr 3 ;
ver tambin
.Xr stty 1 ,
y
.Xr termios 3 .
.Sh ESTNDARES
Las macros
.Nm stdin ,
.Nm stdout ,
y
.Nm stderr
cumplen el
.St -ansiC ,
y este estndar tambin estipula que esos tres flujos se deberan abrir al
comienzo del programa.