---
name: "flockfile"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/flockfile"
---

# flockfile(3)

stdio locking functions

## NAME

**flockfile**, **ftrylockfile**, **funlockfile** – stdio locking functions

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<stdio.h\>**

*void*\

**flockfile**(*FILE \*file*);

*int*\

**ftrylockfile**(*FILE \*file*);

*void*\

**funlockfile**(*FILE \*file*);

## DESCRIPTION

These functions provide explicit application-level locking of stdio FILE objects. They can be used to avoid output from multiple threads being interspersed, input being dispersed among multiple readers, and to avoid the overhead of locking the object for each operation.

The **flockfile**() function acquires an exclusive lock on the specified object. If another thread has already locked the object, **flockfile**() will block until the lock is released.

The **ftrylockfile**() function is a non-blocking version of **flockfile**(); if the lock cannot be acquired immediately, **ftrylockfile**() returns non-zero instead of blocking.

The **funlockfile**() function releases the lock on an object acquired by an earlier call to **flockfile**() or **ftrylockfile**().

These functions behave as if there is a lock count associated with each object. Each time **flockfile**() is called on the object, the count is incremented, and each time **funlockfile**() is called on the object, the count is decremented. The lock is only actually released when the count reaches zero.

## RETURN VALUES

The **flockfile**() and **funlockfile**() functions return no value.

The **ftrylockfile**() function returns zero if the object was successfully locked, non-zero otherwise.

## SEE ALSO

[getc\_unlocked(3)](/getc_unlocked/3.md), [putc\_unlocked(3)](/putc_unlocked/3.md)

## STANDARDS

The **flockfile**(), **ftrylockfile**(), and **funlockfile**() functions conform to IEEE Std 1003.1-2001 (“POSIX.1”).
