Provided by: manpages-zh_1.5.2-1_all bug

NAME

       flockfile, ftrylockfile, funlockfile - 為標準輸入輸出鎖定檔案 FILE

SYNOPSIS 總覽
       #include <stdio.h>

       void flockfile(FILE *filehandle);
       int ftrylockfile(FILE *filehandle);
       void funlockfile(FILE *filehandle);

DESCRIPTION 描述
       標準輸入輸出庫   stdio   函數是線程安全的。這是通過為每個檔案對象  FILE
       賦予一個鎖定計數和                                   (當鎖定計數非零時)
       一個所有者線程來實現的。對每個庫函數調用,這些函數等待直到檔案對象 FILE
       不再被一個不同的線程鎖定,然後鎖定它,進行所需的                    I/O
       操作,再次對它解鎖。

       (注意:這個鎖定與由函數 flock(2) 和 lockf(3) 實現的鎖定無關。)

       所有這些操作對                                                        C
       程式員來說都是不可見的,但是有兩種理由,需要進行更加細節的控制。其一,也許某個線程需要進行不可分割的一系列
       I/O                     操作,不應當被其他線程的                    I/O
       所終端。其二,出於效率因素,應當避免進行過多的鎖定來提高效率。

       為此,一個線程可以顯式地鎖定檔案對象    FILE,接著進行它的一系列    I/O
       操作,然後解鎖。這樣可以避免其他線程幹擾。如果這樣做的原因是需要達到更高的效率,應當使用
       stdio  函數的非鎖定版本來進行   I/O   操作:使用   getc_unlocked()   和
       putc_unlocked() 來代替 getc() 和 putc()。

       函數              flockfile()              等待             *filehandle
       不再被其他的線程鎖定,然後使當前線程成為                    *filehandle
       的所有者,然後增加鎖定計數 lockcount。

       函數 funlockfile() 減少鎖定計數。

       函數   ftrylockfile()flockfile()  的非鎖定版本。它在其他線程擁有
       *filehandle 時不做任何處理,否則取得所有權並增加鎖定計數。

RETURN VALUE 返回值
       函數                ftrylockfile()                 返回零,如果成功的話
       (獲得了鎖定);如果失敗就返回非零。

ERRORS

       無。

AVAILABILITY

       這些函數當定義了  _POSIX_THREAD_SAFE_FUNCTIONS  時可用。它們存在於 libc
       5.1.1 之後的 libc 版本中,以及 glibc 2.0 之後的 glibc 版本中

CONFORMING TO 標準參考
       POSIX.1

SEE ALSO 參見
       unlocked_stdio(3)

                                  2001-10-18                       LOCKFILE(3)