Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
fopen, fdopen, freopen - funkcje otwarcia strumienia
SK/LADNIA
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fildes, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);
OPIS
Funkcja fopen otwiera plik, ktorego nazw wskazuje path i wie z nim
strumie.
Argument mode wskazuje na lacuch rozpoczynajcy si jednym z poniszych
cigow (mog po nich wystpowa dodatkowe znaki):
r Otwarcie pliku tekstowego do odczytu. Strumie wskazuje pocztek
pliku.
r+ Otwarcie pliku do odczytu i zapisu. Strumie wskazuje pocztek
pliku.
w Usunicie zawartoci pliku lub utworzenie nowego pliku tekstowego
do zapisu. Strumie wskazuje pocztek pliku.
w+ Otwarcie do odczytu i zapisu. Jeli plik nie istnieje, zostaje
utworzony, w przeciwnym wypadku jego zawarto zostaje usunita.
Strumie wskazuje pocztek pliku.
a Otwarcie do dopisywania (zapisu na kocu pliku). Jeli plik nie
istnieje, zostaje utworzony. Strumie wskazuje na koniec pliku.
a+ Otwarcie do odczytu i dopisywania (zapisu na kocu pliku). Jeli
plik nie istnieje, zostaje utworzony. Strumie wskazuje na koniec
pliku.
Lacuch mode moe take zawiera liter ``b'' zarowno jak ostatni znak jak
te jako znak umeszczony pomidzy znakami dowolnego dwuznakowego lacucha
opisanego powyej. Sluy to wylcznie zgodnoci z ANSI X3.159-1989 (``ANSI
C'') i nie powoduje adnego efektu, ``b'' jest ignorowane we wszystkich
systemach zgodnych z POSIX, wlczajc Linuksa. (Inne systemy mog ronie
traktowa pliki tekstowe i pliki binarne. Dodanie ``b'' moe by dobrym
pomyslem, jeli wykonywane s operacje I/O dla pliku binarnego a
przewidywane jest przeniesienie programu do rodowisk nieuniksowych.)
Wszystkie pliki bd tworzone z uprawnieniami
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH (0666), zmodyfikowanymi
przez warto umask procesu (patrz umask(2)).
Odczyt i zapis moe wystpowa w strumieniu do zapisu/odczytu w dowolnej
kolejnoci. Naley zauway, e ANSI C wymaga interwencji funkcji ustalajcej
pozycj pliku pomidzy zapisem i odczytem, chyba e operacja odczytu
napotka koniec pliku. (Jeli ten warunek nie jest spelniony, operacja
odczytu moe zwroci wynik innego zapisu ni ostatni.) Tak wic dobr zasad
(i czasami konieczn pod Linuksem) jest wstawianie funkcji fseek lub
fgetpos pomidzy operacjami zapisu i odczytu na takim strumieniu. Ta
operacja moe by pozornym rozkazem pustym, no-op, (tak jak w fseek(...,
0L, SEEK_CUR) wywolywanym w celu wykorzystania ubocznych skutkow
synchronizujcych.
Otwarcie pliku w trybie dopisywania (a jako pierwszy znak mode)
powoduje, e wszystkie poniejsze operacje zapisu do tego strumienia
wystpi na kocu pliku, tak jakby byly poprzedzone wywolaniem
fseek(stream,0,SEEK_END);
Funkcja fdopen wie strumie z istniejcym deskryptorem pliku, fildes.
Lacuch mode 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 fildes, a znaczniki
bldu i koca pliku s wylczane. Tryby "w" oraz "w+" nie powoduj usunicia
zawartoci pliku. Deskryptor pliku nie jest powielany i zozstanie
zamknity w chwili zamknicia strumienia utworzonego za pomoc fdopen.
Rezultat wywolania funkcji fdopen dla obiektu pamici dzielonej jest
niezdefiniowany.
Funkcja freopen otwiera plik, ktorego nazwa jest zawarta w lacuchu
wskazywanym przez path i wie z nim strumie wskazywany przez stream.
Pierwotny strumie jest zamykany (jeli istnieje). Argument mode ma takie
samo znaczenie jak w przypadku funkcji fopen. Glownym zastosowaniem
funkcji freopen jest zamiana pliku zwizanego ze standardowym
strumieniem tekstowym (stderr, stdin lub stdout).
WARTO ZWRACANA
Jeli funkcja fopen, fdopen czy freopen zakoczy si pomylnie, zwraca
wskanik do struktury FILE. W przeciwnym wypadku zwraca NULL a zmiennej
globalnej errno nadawana jest warto okrelajc rodzaj bldu.
B/LDY
EINVAL Argument mode podany dla fopen, fdopen, lub freopen jest
nieprawidlowy.
Funkcje fopen, fdopen i freopen mog take zakoczy si niepowodzeniem i
ustawi warto errno na dowolny bld wymieniony w opisie funkcji
malloc(3).
Funkcja fopen moe take zakoczy si niepowodzeniem i ustawi warto errno
na dowolny bld wymieniony w opisie funkcji open(2).
Funkcja fdopen moe take zakoczy si niepowodzeniem i ustawi warto errno
na dowolny bld wymieniony w opisie funkcji open(2).
Funkcja freopen moe take zakoczy si niepowodzeniem i ustawi warto errno
na dowolny bld wymieniony w opisie funkcji open(2), fclose(3) i
fflush(3).
ZGODNE Z
Funkcje fopen oraz freopen s zgodne z ANSI X3.159-1989 (``ANSI C'').
Funkcja fdopen jest zgodna z IEEE Std1003.1-1988 (``POSIX.1'').
ZOBACZ TAKE
open(2), fclose(3), fileno(3)
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.