Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > F


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


flockfile(), ftrylockfile(), funlockfile() — explicit locking of streams within a multithread application


#include <stdio.h>

void flockfile(FILE *stream);

int ftrylockfile(FILE *stream);

void funlockfile(FILE *stream);


The flockfile(), ftrylockfile(), and funlockfile() functions provide for explicit application-level locking of streams. These functions can be used by a thread to delineate a sequence of I/O statements that are to be executed as a unit.

The flockfile() function is used by a thread to acquire ownership of a (FILE *) object.

The ftrylockfile() function is used by a thread to acquire ownership of a (FILE *) object if the object is available; ftrylockfile() is a non-blocking version of flockfile().

The funlockfile() function is used to relinquish the ownership granted to the thread. The behavior is undefined if a thread other than the current owner calls the funlockfile() function.

Logically, there is a count associated with each stream. This count is implicitly initialized to zero when the stream is created. The stream is unlocked when the count is zero. When the count is positive, a single thread owns the stream. When the flockfile() function is called, if the count is zero or if the count is positive and the caller owns the stream, the count is incremented. Otherwise, the calling thread is suspended, waiting for the count to return to zero. Each call to funlockfile() decrements the count. This allows matching calls to flockfile() (or successful calls to ftrylockfile()) and funlockfile() to be nested.

All POSIX.1 and C standard functions that reference (FILE *) objects behave as if they use flockfile() and funlockfile() internally to obtain ownership of these (FILE *) objects.


None for flockfile() and funlockfile(). The function ftrylockfile() returns zero for success and nonzero to indicate that the lock cannot be acquired.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.