File: fopen.3

package info (click to toggle)
manpages-es 1.55-9
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 7,468 kB
  • ctags: 6
  • sloc: sh: 1,629; makefile: 64
file content (235 lines) | stat: -rw-r--r-- 7,997 bytes parent folder | download | duplicates (4)
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
.\" Copyright (c) 1990, 1991 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Chris Torek and the American National Standards Committee X3,
.\" on Information Processing Systems.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)fopen.3	6.8 (Berkeley) 6/29/91
.\"
.\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu
.\" Modified, aeb, 960421, 970806
.\" Modified, joey, aeb, 2002-01-03
.\" Translated into Spanish Mon Jan 19 1998 by
.\"	Gerardo Aburruzaga García <gerardo.aburruzaga@uca.es>
.\" Translation revised Tue Apr 18 2000 by Juan Piernas <piernas@ditec.um.es>
.\" Traducción revisada por Miguel Pérez Ibars <mpi79470@alu.um.es> el 2-marzo-2005
.\"
.TH FOPEN 3  "3 enero 2002" "BSD" "Manual del Programador de Linux"
.SH NOMBRE
fopen, fdopen, freopen \- funciones de apertura de flujos
.SH SINOPSIS
.B #include <stdio.h>
.sp
.BI "FILE *fopen(const char *" path ", const char *" mode );
.br
.BI "FILE *fdopen(int " fildes ", const char *" mode );
.br
.BI "FILE *freopen(const char *" path ", const char *" mode ", FILE *" stream );
.SH DESCRIPCIÓN
La función
.B fopen
abre el fichero cuyo nombre es la cadena apuntada por
.I camino
y asocia un flujo de datos a él.
.PP
El argumento
.I modo
apunta a una cadena que empieza con una de las siguientes secuencias
(a las que pueden seguir caracteres adicionales): 
.TP
.B r
Abre un fichero de texto para lectura. El flujo se posiciona al
principio del fichero.
.TP
.B r+
Abre para lectura y escritura. El flujo se posiciona al principio del fichero.
.TP
.B w
Trunca el fichero a longitud cero o crea un fichero de texto para
escritura.  El flujo se posiciona al principio del fichero.
.TP
.B w+
Abre para lectura y escritura. El fichero se crea si no existe, en
otro caso se trunca.  El flujo se posiciona al principio del fichero.
.TP
.B a
Abre para añadir (escribir al final del fichero). El fichero se crea si no existe. El flujo se
posiciona al final del fichero.
.TP
.B a+
Abre para leer y añadir (escribir al final del fichero). El fichero se crea si no existe. El flujo se
posiciona al final del fichero.
.PP
La cadena
.I modo
también puede incluir la letra ``b'' como último carácter o entre
los de cualquiera de las cadenas de dos caracteres descritas
anteriormente. Todo esto es estrictamente por compatibilidad con ANSI
X3.159-1989 (``ANSI C'') y no tiene efecto. La ``b'' se ignora en todos los
sistemas conformes con POSIX, incluido Linux.
(Otros sistemas pueden tratar los ficheros de texto y los ficheros binarios
de forma diferente, y añadir la ``b'' puede ser una buena idea si realiza
E/S de un fichero binario y espera que su programa pueda ser transportado a
entornos no Unix).
.PP
Cualquier fichero creado tendrá de permisos
.BR S_IRUSR \&| S_IWUSR \&|  S_IRGRP \&|  S_IWGRP \&| S_IROTH \&| S_IWOTH
(0666), modificados por el valor de la máscara umask del proceso (vea
.BR umask (2)).
.PP
Las lecturas y las escrituras pueden mezclarse en flujos abiertos para
lectura/escritura en cualquier orden. Observe que C ANSI requiere que
intervenga una función de posicionamiento entre la salida y la
entrada, a menos que una operación de entrada encuentre el
fin-de-fichero. (Si esta condición no se cumple, entonces se permite a
una lectura devolver el resultado de escrituras distintas a la más
reciente.) 
Por lo tanto es buena práctica (y desde luego necesario algunas veces
bajo Linux) hacer una operación
.B fseek
o
.B fgetpos
entre operaciones de escritura y lectura en tal flujo. Esta operación
puede ser aparentemente inútil (como en \fIfseek(..., 0L, SEEK_CUR)\fR),
llamada por su efecto lateral de sincronización.
.PP
Abrir un fichero para añadir (\fBa\fR como primer carácter de
.IR mode )
implica que todas las operaciones de escritura posteriores sobre el flujo
se realicen al final del fichero, como si fueran precedidas por una llamada
.RS
fseek(stream,0,SEEK_END);
.RE.
.PP
La función
.B fdopen
asocia un flujo con el descriptor de fichero existente,
.IR descf .
El
.I modo
del flujo (uno de los valores "r", "r+", "w", "w+", "a", "a+") debe ser
compatible con el del descriptor de fichero. Al indicador de posición de
fichero del nuevo flujo se le asigna el valor del indicador de posición
perteneciente a
.IR descf
y los indicadores de error y de fin-de-fichero se limpian. Los modos "w" y
"w+" no provocan el trucamiento del fichero.
El descriptor de fichero no es \fIdup\fPlicado y se cerrará cuando el
flujo creado por 
.B fdopen
se cierre.
El resultado de aplicar
.I fdopen
a un objeto compartido de memoria es indefinido.
.PP
La función
.B freopen
abre el fichero cuyo nombre es la cadena apuntada por
.I camino
y asocia el flujo apuntado por
.I flujo
con él. El flujo original (si existe) se cierra. El argumento
.I modo
se emplea igual que en la función \fBfopen\fP. El uso principal de
la función
.B freopen
es cambiar el fichero asociado con un flujo de texto estándar
.IR "" ( stderr ", " stdin ", o " stdout ).
.SH "VALOR DEVUELTO"
Cuando acaban bien,
.BR fopen ,
.B fdopen
y
.B freopen
devuelven un puntero a \fBFILE\fP. Cuando no, devuelven
.B NULL
y la variable global 
.I errno
contiene un valor que indica el error.
.SH ERRORES
.TP
.B EINVAL
El
.I modo
pasado a
.BR fopen ,
.BR fdopen ,
o a
.B freopen
no era válido.
.PP
Las funciones
.BR fopen ,
.B fdopen
y
.B freopen
también pueden fallar y poner un valor en 
.I errno
para cualquiera de los errores especificados para la rutina
.BR malloc (3).
.PP
La función
.B fopen
también puede fallar y poner un valor en
.I errno
para cualquiera de los errores especificados para la rutina
.BR open (2).
.PP
La función
.B fdopen
también puede fallar y poner un valor en
.I errno
para cualquiera de los errores especificados para la rutina
.BR fcntl (2).
.PP
La función
.B freopen
también puede fallar y poner un valor en
.I errno
para cualquiera de los errores especificados para las rutinas
.BR open (2),
.BR fclose (3)
y
.BR fflush (3).
.SH CONFORME A
Las funciones
.B fopen
y
.B freopen
son conformes con ANSI X3.159-1989 (``C ANSI'').  La función
.B fdopen
es conforme con IEEE Std1003.1-1988 (``POSIX.1'').
.SH "VÉASE TAMBIÉN"
.BR open (2),
.BR fclose (3),
.BR fileno (3)