funlockfile

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
LOCKFILE(3)		  Linux Programmer’s Manual		  LOCKFILE(3)



NAME
       flockfile, ftrylockfile, funlockfile - lock FILE for stdio

SYNOPSIS
       #include <stdio.h>

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

DESCRIPTION
       The  stdio functions are thread-safe. This is achieved by assigning to
       each FILE object a lockcount and (if the lockcount is nonzero) an own-
       ing  thread.   For  each	 library call, these functions wait until the
       FILE object is no longer locked by a different thread, then  lock  it,
       do the requested I/O, and unlock the object again.

       (Note:  this  locking  has nothing to do with the file locking done by
       functions like flock(2) and lockf(3).)

       All this is invisible to the C-programmer, but there may be  two	 rea-
       sons  to	 wish  for  more  detailed  control. On the one hand, maybe a
       series of I/O actions by one thread belongs together, and  should  not
       be  interrupted	by  the I/O of some other thread.  On the other hand,
       maybe the locking overhead should be avoided for greater efficiency.

       To this end, a thread can explicitly lock the FILE object, then do its
       series  of  I/O actions, then unlock. This prevents other threads from
       coming in between. If the reason for doing this was to achieve greater
       efficiency,  one	 does  the  I/O	 with the non-locking versions of the
       stdio functions: with getc_unlocked() and putc_unlocked()  instead  of
       getc() and putc().

       The  flockfile() function waits for *filehandle to be no longer locked
       by a different thread, then makes the current thread owner  of  *file-
       handle, and increments the lockcount.

       The funlockfile() function decrements the lock count.

       The  ftrylockfile() function is a non-blocking version of flockfile().
       It does nothing in case some other thread  owns	*filehandle,  and  it
       obtains ownership and increments the lockcount otherwise.

RETURN VALUE
       The  ftrylockfile()  function  returns  zero for success (the lock was
       obtained), and nonzero for failure.

ERRORS
       None.

AVAILABILITY
       These functions are  available  when  _POSIX_THREAD_SAFE_FUNCTIONS  is
       defined.	 They  are  in libc since libc 5.1.1 and in glibc since glibc
       2.0.

CONFORMING TO
       POSIX.1

SEE ALSO
       unlocked_stdio(3)




				  2001-10-18			  LOCKFILE(3)