Provided by: manpages-pl-dev_0.5-1_all bug

NAZWA

       fopen, fdopen, freopen - funkcje otwarcia strumienia

SKŁADNIA

       #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

        Uwaga! To tłumaczenie może być nieaktualne!

       Funkcja fopen otwiera plik, którego nazwę wskazuje path i wiąże z nim strumień.

       Argument  mode  wskazuje na łańcuch rozpoczynający się jednym z poniższych ciągów (mogą po
       nich występować dodatkowe znaki):

       r      Otwarcie pliku tekstowego do odczytu. Strumień wskazuje początek pliku.

       r+     Otwarcie pliku do odczytu i zapisu. Strumień wskazuje początek pliku.

       w      Usunięcie zawartości pliku  lub  utworzenie  nowego  pliku  tekstowego  do  zapisu.
              Strumień wskazuje początek pliku.

       w+     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.

       a      Otwarcie  do  dopisywania (zapisu na końcu pliku). Jeśli plik nie istnieje, zostaje
              utworzony. Strumień wskazuje na koniec pliku.

       a+     Otwarcie do odczytu i dopisywania (zapisu na końcu pliku). Jeśli plik nie istnieje,
              zostaje utworzony. Strumień wskazuje na koniec pliku.

       Łańcuch  mode  może także zawierać literę ``b'' 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 ANSI X3.159-1989 (``ANSI C'') i nie powoduje żadnego efektu, ``b''
       jest ignorowane we wszystkich  systemach  zgodnych  z  POSIX,  włączając  Linuksa.   (Inne
       systemy  mogą  różnie  traktować  pliki  tekstowe i pliki binarne.  Dodanie ``b'' może być
       dobrym pomysłem, jeśli wykonywane są operacje I/O dla pliku binarnego a przewidywane  jest
       przeniesienie programu do środowisk nieuniksowych.)

       Wszystkie          pliki          będą          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  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 fseek lub
       fgetpos pomiędzy operacjami zapisu i odczytu na takim strumieniu.  Ta  operacja  może  być
       pozornym  rozkazem  pustym,  no-op, (tak jak w fseek(..., 0L, SEEK_CUR) wywoływanym w celu
       wykorzystania ubocznych skutków synchronizujących.

       Otwarcie pliku w trybie dopisywania (a jako pierwszy znak  mode)  powoduje,  że  wszystkie
       późniejsze  operacje  zapisu  do  tego  strumienia wystąpią na końcu pliku, tak jakby były
       poprzedzone wywołaniem
              fseek(stream,0,SEEK_END);

       Funkcja fdopen wiąże strumień z  istniejącym  deskryptorem  pliku,  fildes.  Łańcuch  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  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ą fdopen.  Rezultat wywołania funkcji
       fdopen dla obiektu pamięci dzielonej jest niezdefiniowany.

       Funkcja freopen otwiera plik, którego nazwa jest zawarta w łańcuchu wskazywanym przez path
       i  wiąże  z nim strumień wskazywany przez stream.  Pierwotny strumień jest zamykany (jeśli
       istnieje). Argument mode ma takie samo znaczenie jak w przypadku funkcji  fopen.   Głównym
       zastosowaniem  funkcji  freopen  jest zamiana pliku związanego ze standardowym strumieniem
       tekstowym (stderr, stdin lub stdout).

WARTOŚĆ ZWRACANA

       Jeśli funkcja fopen, fdopen  czy  freopen  zakończy  się  pomyślnie,  zwraca  wskaźnik  do
       struktury FILE.  W przeciwnym wypadku zwraca NULL a zmiennej globalnej errno nadawana jest
       wartość określającą rodzaj błędu.

BŁĘDY

       EINVAL Argument mode podany dla fopen, fdopen, lub freopen jest nieprawidłowy.

       Funkcje fopen, fdopen i freopen mogą także zakończyć się niepowodzeniem i ustawić  wartość
       errno na dowolny błąd wymieniony w opisie funkcji malloc(3).

       Funkcja  fopen  może także zakończyć się niepowodzeniem i ustawić wartość errno na dowolny
       błąd wymieniony w opisie funkcji open(2).

       Funkcja fdopen może także zakończyć się niepowodzeniem i ustawić wartość errno na  dowolny
       błąd wymieniony w opisie funkcji open(2).

       Funkcja freopen może także zakończyć się niepowodzeniem i ustawić wartość errno na dowolny
       błąd 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 TAKŻE

       open(2), fclose(3), fileno(3)

INFORMACJE O TŁUMACZENIU

       Powyższe  tłumaczenie  pochodzi  z nieistniejącego już Projektu Tłumaczenia Manuali i może
       nie być aktualne. W  razie  zauważenia  różnic  między  powyższym  opisem  a  rzeczywistym
       zachowaniem  opisywanego  programu  lub  funkcji,  prosimy  o  zapoznanie się z oryginalną
       (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 3 fopen

       Prosimy o pomoc w aktualizacji stron man - więcej informacji  można  znaleźć  pod  adresem
       http://sourceforge.net/projects/manpages-pl/.