.\" -*- 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 "22 marca 2021 r." GNU "Podręcznik programisty Linuksa" .SH NAZWA fopen, fdopen, freopen \- funkcje otwarcia strumienia .SH SKŁADNIA .nf \fB#include \fP .PP \fBFILE *fopen(const char *restrict \fP\fIpathname\fP\fB, const char *restrict \fP\fImode\fP\fB);\fP \fBFILE *fdopen(int \fP\fIfd\fP\fB, const char *\fP\fImode\fP\fB);\fP \fBFILE *freopen(const char *restrict \fP\fIpathname\fP\fB, const char *restrict \fP\fImode\fP\fB,\fP \fB FILE *restrict \fP\fIstream\fP\fB);\fP .fi .PP .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .PP \fBfdopen\fP(): .nf _POSIX_C_SOURCE .fi .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 Wszystkie pliki będą tworzone z uprawnieniami \fBS_IRUSR\fP | \fBS_IWUSR\fP | \fBS_IRGRP\fP | \fBS_IWGRP\fP | \fBS_IROTH\fP | \fBS_IWOTH\fP (0666), zmodyfikowanymi przez wartość umask procesu (patrz \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). .ad l .nh .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ \fBfopen\fP(), \fBfdopen\fP(), \fBfreopen\fP() T} Bezpieczeństwo wątkowe MT\-Safe .TE .hy .ad .sp 1 .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.13 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/. .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Adam Byrtek i Andrzej Krzysztofowicz . .PP 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. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .