Provided by: manpages-pl-dev_0.7-2_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/.

BSD                                                2002-01-03                                           FOPEN(3)