www.digipedia.pl - manuale

FOPEN(3)

FOPEN(3) Podręcznik programisty Linuksa FOPEN(3)
{PTM/AB/0.1/13-03-1999/"fopen, fdopen, freopen - funkcje otwarcia strumienia"} translated by Adam Byrtek <alpha@irc.pl> Aktualizacja do man-pages 1.50 - A. Krzysztofowicz <ankry@mif.pg.gda.pl> ------------ 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.
 
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.
 
@(#)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
 
------------

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/.

2002-01-03 BSD