Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
flockfile(3C)		 Standard C Library Functions		 flockfile(3C)

NAME
       flockfile, funlockfile, ftrylockfile - acquire and release stream lock

SYNOPSIS
       #include	<stdio.h>

       void flockfile(FILE *stream);

       void funlockfile(FILE *stream);

       int ftrylockfile(FILE *stream);

DESCRIPTION
       The  flockfile()	function acquires an internal lock of a	stream stream.
       If the lock is already acquired by another thread, the  thread  calling
       flockfile()  is	suspended  until it can	acquire	the lock.  In the case
       that the	stream lock is available, flockfile() not  only	 acquires  the
       lock,  but keeps	track of the number of times it	is being called	by the
       current thread.	This implies that the stream lock can be acquired more
       than once by the	same thread.

       The  funlockfile() function releases the	lock being held	by the current
       thread.	In the case of recursive locking, this function	must be	called
       the  same  number of times flockfile() was called.  After the number of
       funlockfile() calls is equal to the number of  flockfile()  calls,  the
       stream lock is available	for other threads to acquire.

       The  ftrylockfile()  function  acquires	an  internal  lock of a	stream
       stream, only if that object is available.  In essence ftrylockfile() is
       a non-blocking version of flockfile().

RETURN VALUES
       The  ftrylockfile() function returns 0 on success and non-zero to indi-
       cate a lock cannot be acquired.

EXAMPLES
       Example 1: A sample program of flockfile().

       The following example prints everything out  together,  blocking	 other
       threads	that  might  want  to  write to	the same file between calls to
       fprintf(3C):

       FILE iop;
       flockfile(iop);
       fprintf(iop, "hello ");
       fprintf(iop, "world);
       fputc(iop, 'a');
       funlockfile(iop);

       An unlocked interface is	available in case  performance	is  an	issue.
       For example:

       flockfile(iop);
       while (!feof(iop)) {
	       *c++ = getc_unlocked(iop);
       }
       funlockfile(iop);

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       +-----------------------------+-----------------------------+
       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       +-----------------------------+-----------------------------+
       |Interface Stability	     |Standard			   |
       +-----------------------------+-----------------------------+
       |MT-Level		     |MT-Safe			   |
       +-----------------------------+-----------------------------+

SEE ALSO
       intro(3),   __fsetlocking(3C),	ferror(3C),   fprintf(3C),   getc(3C),
       putc(3C), stdio(3C), ungetc(3C),	attributes(5), standards(5)

NOTES
       The interfaces on this page  are	as specified in	IEEE Std  1003.1:2001.
       See standards(5).

SunOS 5.10			  10 Sep 2003			 flockfile(3C)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | ATTRIBUTES | SEE ALSO | NOTES

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=flockfile&sektion=3c&manpath=SunOS+5.10>

home | help