Provided by: manpages-pl-dev_20060617-3_all bug

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.