.\" -*- coding: UTF-8 -*-
.\" 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.
.\"
.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
.\" 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.
.\" %%%LICENSE_END
.\"
.\"     @(#)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
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH FOPEN 3 "9 maja 2019 r." GNU "Podręcznik programisty Linuksa"
.SH NAZWA
fopen, fdopen, freopen \- funkcje otwarcia strumienia
.SH SKŁADNIA
.nf
\fB#include <stdio.h>\fP
.PP
\fBFILE *fopen(const char *\fP\fIpathname\fP\fB, const char *\fP\fImode\fP\fB);\fP
.PP
\fBFILE *fdopen(int \fP\fIfd\fP\fB, const char *\fP\fImode\fP\fB);\fP
.PP
\fBFILE *freopen(const char *\fP\fIpathname\fP\fB, const char *\fP\fImode\fP\fB, FILE *\fP\fIstream\fP\fB);\fP
.fi
.PP
.in -4n
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.in
.PP
\fBfdopen\fP(): _POSIX_C_SOURCE
.SH OPIS
Funkcja \fBfopen\fP() otwiera plik, którego nazwę wskazuje \fIpathname\fP i wiąże
z nim strumień.
.PP
The argument \fImode\fP points to a string beginning with one of the following
sequences (possibly followed by additional characters, as described below):
.TP 
\fBr\fP
Otwarcie pliku tekstowego do odczytu. Strumień wskazuje początek pliku.
.TP 
\fBr+\fP
Otwarcie pliku do odczytu i zapisu. Strumień wskazuje początek pliku.
.TP 
\fBw\fP
Usunięcie zawartości pliku lub utworzenie nowego pliku tekstowego do
zapisu. Strumień wskazuje początek pliku.
.TP 
\fBw+\fP
Otwarcie do odczytu i zapisu. Jeśli plik nie istnieje, zostaje utworzony, w
przeciwnym wypadku jego zawartość zostaje usunięta. Strumień wskazuje
początek pliku.
.TP 
\fBa\fP
Otwarcie do dopisywania (zapisu na końcu pliku). Jeśli plik nie istnieje,
zostaje utworzony. Strumień wskazuje na koniec pliku.
.TP 
\fBa+\fP
Open for reading and appending (writing at end of file).  The file is
created if it does not exist.  Output is always appended to the end of the
file.  POSIX is silent on what the initial read position is when using this
mode.  For glibc, the initial file position for reading is at the beginning
of the file, but for Android/BSD/MacOS, the initial file position for
reading is at the end of the file.
.PP
Łańcuch \fImode\fP może także zawierać literę \(aqb\(aq zarówno jak ostatni
znak jak też jako znak umeszczony pomiędzy znakami dowolnego dwuznakowego
łańcucha opisanego powyżej. Służy to wyłącznie zgodności z C89 i nie
powoduje żadnego efektu, \(aqb\(aq jest ignorowane we wszystkich systemach
zgodnych z POSIX, włączając Linuksa. (Inne systemy mogą różnie traktować
pliki tekstowe i pliki binarne. Dodanie \(aqb\(aq może być dobrym pomysłem,
jeśli wykonywane są operacje I/O dla pliku binarnego a przewidywane jest
przeniesienie programu do środowisk nieuniksowych.)
.PP
See NOTES below for details of glibc extensions for \fImode\fP.
.PP
Any created file will have the mode \fBS_IRUSR\fP | \fBS_IWUSR\fP | \fBS_IRGRP\fP |
\fBS_IWGRP\fP | \fBS_IROTH\fP | \fBS_IWOTH\fP (0666), as modified by the process's
umask value (see \fBumask\fP(2)).
.PP
Odczyt i zapis może występować w strumieniu do zapisu/odczytu w dowolnej
kolejności. Należy zauważyć, że ANSI C wymaga interwencji funkcji
ustalającej pozycję pliku pomiędzy zapisem i odczytem, chyba że operacja
odczytu napotka koniec pliku. (Jeśli ten warunek nie jest spełniony,
operacja odczytu może zwrócić wynik innego zapisu niż ostatni.) Tak więc
dobrą zasadą (i czasami konieczną pod Linuksem) jest wstawianie funkcji
\fBfseek\fP(3) lub \fBfgetpos\fP(3) pomiędzy operacjami zapisu i odczytu na takim
strumieniu. Ta operacja może być pozornym rozkazem pustym, no\-op, (tak jak w
\fIfseek(..., 0L, SEEK_CUR\fP) wywoływanym w celu wykorzystania ubocznych
skutków synchronizujących.
.PP
Otwarcie pliku w trybie dopisywania (\fBa\fP jako pierwszy znak \fImode\fP)
powoduje, że wszystkie późniejsze operacje zapisu do tego strumienia
wystąpią na końcu pliku, tak jakby były poprzedzone wywołaniem
.PP
.in +4n
.EX
fseek(stream, 0, SEEK_END);
.EE
.in
.PP
The file descriptor associated with the stream is opened as if by a call to
\fBopen\fP(2)  with the following flags:
.RS
.TS
allbox;
lb lb
c l.
fopen() mode	open() flags
\fIr\fP	O_RDONLY
\fIw\fP	O_WRONLY | O_CREAT | O_TRUNC
\fIa\fP	O_WRONLY | O_CREAT | O_APPEND
\fIr+\fP	O_RDWR
\fIw+\fP	O_RDWR | O_CREAT | O_TRUNC
\fIa+\fP	O_RDWR | O_CREAT | O_APPEND
.TE
.RE
.\"
.SS fdopen()
.\"
Funkcja \fBfdopen\fP() wiąże strumień z istniejącym deskryptorem pliku,
\fIfd\fP. Łańcuch \fImode\fP strumienia (jeden z "r", "r+", "w", "w+", "a", "a+")
musi być zgodny z trybem otwarcia deskryptora pliku. Pozycja nowego
strumienia jest taka sama, jak pozycja deskryptora \fIfd\fP, a znaczniki błędu
i końca pliku są wyłączane. Tryby "w" oraz "w+" nie powodują usunięcia
zawartości pliku. Deskryptor pliku nie jest powielany i zozstanie zamknięty
w chwili zamknięcia strumienia utworzonego za pomocą \fBfdopen\fP(). Rezultat
wywołania funkcji \fBfdopen\fP() dla obiektu pamięci dzielonej jest
niezdefiniowany.
.SS freopen()
Funkcja \fBfreopen\fP() otwiera plik, którego nazwa jest zawarta w łańcuchu
wskazywanym przez \fIpathname\fP i wiąże z nim strumień wskazywany przez
\fIstream\fP. Pierwotny strumień jest zamykany (jeśli istnieje). Argument
\fImode\fP ma takie samo znaczenie jak w przypadku funkcji \fBfopen\fP().
.PP
If the \fIpathname\fP argument is a null pointer, \fBfreopen\fP()  changes the
mode of the stream to that specified in \fImode\fP; that is, \fBfreopen\fP()
reopens the pathname that is associated with the stream.  The specification
for this behavior was added in the C99 standard, which says:
.PP
.RS
In this case, the file descriptor associated with the stream need not be
closed if the call to \fBfreopen\fP()  succeeds.  It is implementation\-defined
which changes of mode are permitted (if any), and under what circumstances.
.RE
.PP
The primary use of the \fBfreopen\fP()  function is to change the file
associated with a standard text stream (\fIstderr\fP, \fIstdin\fP, or \fIstdout\fP).
.SH "WARTOŚĆ ZWRACANA"
Jeśli funkcja \fBfopen\fP(), \fBfdopen\fP() czy \fBfreopen\fP() zakończy się
pomyślnie, zwraca wskaźnik do struktury \fBFILE\fP. W przeciwnym wypadku zwraca
NULL a zmiennej globalnej \fIerrno\fP nadawana jest wartość określającą rodzaj
błędu.
.SH BŁĘDY
.TP 
\fBEINVAL\fP
Argument \fImode\fP podany dla \fBfopen\fP(), \fBfdopen\fP() lub \fBfreopen\fP() jest
nieprawidłowy.
.PP
Funkcje \fBfopen\fP(), \fBfdopen\fP() i \fBfreopen\fP() mogą także zakończyć się
niepowodzeniem i ustawić wartość \fIerrno\fP na dowolny błąd wymieniony w
opisie funkcji \fBmalloc\fP(3).
.PP
Funkcja \fBfopen\fP() może także zakończyć się niepowodzeniem i ustawić wartość
\fIerrno\fP na dowolny błąd wymieniony w opisie funkcji \fBopen\fP(2).
.PP
Funkcja \fBfdopen\fP() może także zakończyć się niepowodzeniem i ustawić
wartość \fIerrno\fP na dowolny błąd wymieniony w opisie funkcji \fBopen\fP(2).
.PP
Funkcja \fBfreopen\fP() może także zakończyć się niepowodzeniem i ustawić
wartość \fIerrno\fP na dowolny błąd wymieniony w opisie funkcji \fBopen\fP(2),
\fBfclose\fP(3) i \fBfflush\fP(3).
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.TS
allbox;
lbw28 lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBfopen\fP(),
\fBfdopen\fP(),
\fBfreopen\fP()
T}	Bezpieczeństwo wątkowe	MT\-Safe
.TE
.SH "ZGODNE Z"
\fBfopen\fP(), \fBfreopen\fP(): POSIX.1\-2001, POSIX.1\-2008, C89, C99.
.PP
\fBfdopen\fP(): POSIX.1\-2001, POSIX.1\-2008.
.SH UWAGI
.SS "Uwagi dla glibc"
The GNU C library allows the following extensions for the string specified
in \fImode\fP:
.TP 
\fBc\fP (od wersji 2.3.3 biblioteki glibc)
Do not make the open operation, or subsequent read and write operations,
thread cancellation points.  This flag is ignored for \fBfdopen\fP().
.TP 
\fBe\fP (od wersji 2.7 biblioteki glibc)
Open the file with the \fBO_CLOEXEC\fP flag.  See \fBopen\fP(2)  for more
information.  This flag is ignored for \fBfdopen\fP().
.TP 
\fBm\fP (od wersji 2.3 biblioteki glibc)
.\" As at glibc 2.4:
Attempt to access the file using \fBmmap\fP(2), rather than I/O system calls
(\fBread\fP(2), \fBwrite\fP(2)).  Currently, use of \fBmmap\fP(2)  is attempted only
for a file opened for reading.
.TP 
\fBx\fP
.\" Since glibc 2.0?
.\" FIXME . C11 specifies this flag
Open the file exclusively (like the \fBO_EXCL\fP flag of \fBopen\fP(2)).  If the
file already exists, \fBfopen\fP()  fails, and sets \fIerrno\fP to \fBEEXIST\fP.
This flag is ignored for \fBfdopen\fP().
.PP
In addition to the above characters, \fBfopen\fP()  and \fBfreopen\fP()  support
the following syntax in \fImode\fP:
.PP
\fB ,ccs=\fP\fIstring\fP
.PP
The given \fIstring\fP is taken as the name of a coded character set and the
stream is marked as wide\-oriented.  Thereafter, internal conversion
functions convert I/O to and from the character set \fIstring\fP.  If the
\fB,ccs=\fP\fIstring\fP syntax is not specified, then the wide\-orientation of the
stream is determined by the first file operation.  If that operation is a
wide\-character operation, the stream is marked wide\-oriented, and functions
to convert to the coded character set are loaded.
.SH BŁĘDY
.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=12685
When parsing for individual flag characters in \fImode\fP (i.e., the characters
preceding the "ccs" specification), the glibc implementation of \fBfopen\fP()
and \fBfreopen\fP()  limits the number of characters examined in \fImode\fP to 7
(or, in glibc versions before 2.14, to 6, which was not enough to include
possible specifications such as "rb+cmxe").  The current implementation of
\fBfdopen\fP()  parses at most 5 characters in \fImode\fP.
.SH "ZOBACZ TAKŻE"
\fBopen\fP(2), \fBfclose\fP(3), \fBfileno\fP(3), \fBfmemopen\fP(3), \fBfopencookie\fP(3),
\fBopen_memstream\fP(3)
.SH "O STRONIE"
Angielska wersja tej strony pochodzi z wydania 5.04 projektu Linux
\fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów oraz
najnowszą wersję oryginału można znaleźć pod adresem
\%https://www.kernel.org/doc/man\-pages/.

.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Adam Byrtek <alpha@irc.pl>
i
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
.

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres
.MT
manpages-pl-list@lists.sourceforge.net
.ME .
