Provided by: manpages-zh_1.5.1-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)