flockfile(3) Library Functions Manual flockfile(3) NAZWA flockfile, ftrylockfile, funlockfile - blokowanie strumienia FILE dla stdio BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include void flockfile(FILE *filehandle); int ftrylockfile(FILE *filehandle); void funlockfile(FILE *filehandle); Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)): Wszystkie funkcje powyzej: /* Since glibc 2.24: */ _POSIX_C_SOURCE >= 199309L || /* glibc <= 2.23: */ _POSIX_C_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE OPIS Powyzsze funkcje stdio sa przystosowane do pracy wielowatkowej. Uzyskuje sie to przez przypisanie kazdemu z obiektow FILE licznika blokad oraz (jesli wartosc licznika jest niezerowa) watku bedacego jego wlascicielem. Przy kazdym wywolaniu funkcji bibliotecznej funkcje te czekaja, az obiekt FILE nie bedzie juz blokowany przez inny watek, a nastepnie go blokuja, wykonuja zadane operacje wejscia/wyjscia i odblokowuja obiekt ponownie. (Uwaga: blokowanie to nie ma nic wspolnego z blokowaniem plikow za pomoca funkcji w rodzaju flock(2) i lockf(3)). Wszystko to dzieje sie w sposob niewidoczny dla programisty C, jednak moga pojawic sie dwa powody wymagajace bardziej szczegolowej kontroli. Z jednej strony szereg operacji wejscia/wyjscia wykonywanych w jednym watku moze stanowic calosc, ktora nie moze zostac przerwana przez operacje wejscia/wyjscia innego watku. Z drugiej zas strony moze istniec potrzeba unikniecia narzutu wywolanego przez pojedyncze blokady w celu uzyskania wiekszej wydajnosci. W takich sytuacjach watek moze jawnie zablokowac obiekt FILE, wykonac szereg operacji wejscia/wyjscia i odblokowac go. Uniemozliwia to innym watkom przeszkadzanie w miedzyczasie. Jesli powodem zalozenia blokady ma byc osiagniecie wiekszej wydajnosci, wykonuje sie operacje wejscia/wyjscia za pomoca nieblokujacych wersji funkcji stdio: getc_unlocked(3) oraz putc_unlocked(3) zamiast getc(3) i putc(3). Funkcja flockfile() czeka az *filehandle nie bedzie zablokowany przez inny watek, a nastepnie czyni biezacy watek wlascicielem *filehandle i zwieksza o jeden licznik blokad. Funkcja funlockfile() zmniejsza licznik blokad o jeden. Funkcja ftrylockfile() jest nieblokujaca wersja flockfile(). Nie robi nic, gdy inny watek jest wlascicielem *filehandle, a w przeciwnym przypadku przejmuje wlasnosc i zwieksza licznik blokad o jeden. WARTOSC ZWRACANA Funkcja ftrylockfile() zwraca zero w przypadku sukcesu (blokada zostala zalozona), a wartosc niezerowa w razie niepowodzenia. BLEDY Brak. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------------------+--------------------------+---------------+ |Interfejs | Atrybut | Wartosc | +---------------------------+--------------------------+---------------+ |flockfile(), | Bezpieczenstwo watkowe | MT-bezpieczne | |ftrylockfile(), | | | |funlockfile() | | | +---------------------------+--------------------------+---------------+ STANDARDY POSIX.1-2008. HISTORIA POSIX.1-2001. Funkcje te sa dostepne, gdy zdefiniowane jest _POSIX_THREAD_SAFE_FUNCTIONS. ZOBACZ TAKZE unlocked_stdio(3) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Andrzej Krzysztofowicz i Robert Luberda Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. flockfile(3)