Provided by:
manpages-zh_1.5.1-1_all 
NAME
flockfile, ftrylockfile, funlockfile - 為標準輸入輸出鎖定檔案 FILE
SYNOPSIS`覽
#include <stdio.h>
void flockfile(FILE *filehandle);
int ftrylockfile(FILE *filehandle);
void funlockfile(FILE *filehandle);
DESCRIPTIONyz
標準輸入輸出庫 stdio 函數是線程安全的。這是通過為每蚗仵袡龠H FILE
賦予一蚋磡wp數和 (當鎖定p數非零時) 一茤狾釭抻u程來實現的。對每-
荇w函數調用,這些函數等待直到檔案對象 FILE 不再被一-
茪ㄕP的線程鎖定,然後鎖定它,進行所需的 I/O 操作,再次對它解鎖。
(注意:這蚋磡w與由函數 flock(2) 和 lockf(3) 實現的鎖定無關。)
所有這些操作對 C 程式來說都是不可見的,但是有兩種理由,需-
n進行更加細節的控制。其一,也閉Y蚑u程需n進行不可分割的一系列 I/O
操作,不應當被其他線程的 I/O
所終端。其二,出於效率因素,應當避免進行過多的鎖定來提高效率。
為此,一蚑u程可以顯式地鎖定檔案對象 FILE,接著進行它的一系列 I/O
操作,然後解鎖。這樣可以避免其他線程幹擾。如果這樣做的鴞]是需-
n達到更高的效率,應當使用 stdio 函數的非鎖定版本來進行 I/O 操作:使用
getc_unlocked() 和 putc_unlocked() 來代替 getc() 和 putc()。
函數 flockfile() 等待 *filehandle
不再被其他的線程鎖定,然後使當前線程成為 *filehandle
的所有者,然後增加鎖定p數 lockcount。
函數 funlockfile() 減少鎖定p數。
函數 ftrylockfile() 是 flockfile() 的非鎖定版本。它在其他線程擁有
*filehandle 時不做任何處理,否則取得所有權並增加鎖定p數。
RETURN VALUE^
函數 ftrylockfile() 返回零,如果成左爾
(獲得了鎖定);如果失敗就返回非零。
ERRORS
無。
AVAILABILITY
這些函數當定義了 _POSIX_THREAD_SAFE_FUNCTIONS 時可用。它怞s在於 libc
5.1.1 之後的 libc 版本中,以及 glibc 2.0 之後的 glibc 版本中
CONFORMING TO考
POSIX.1
SEE ALSO見
unlocked_stdio(3)
2001-10-18 LOCKFILE(3)