Skip to content
Syscall BSD#131

svc · unix #131

flock

Pose ou retire un verrou consultatif BSD sur un fichier entier via un descripteur ouvert.

Prototype

int flock(int fd, int how);

Retour: int

Arguments

NameTypeDirDescription
fdint-
howint-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard131
xnu-1699.24.8macOS 10.7 Lion131
xnu-2050.18.24macOS 10.8 Mountain Lion131
xnu-2422.115.4macOS 10.9 Mavericks131
xnu-2782.40.9macOS 10.10 Yosemite131
xnu-3247.1.106macOS 10.11 El Capitan131
xnu-3789.1.32macOS 10.12 Sierra131
xnu-4570.1.46macOS 10.13 High Sierra131
xnu-4903.221.2macOS 10.14 Mojave131
xnu-6153.11.26macOS 10.15 Catalina131
xnu-1486.2.11131
xnu-1504.15.3131
xnu-1504.3.12131
xnu-1504.7.4131
xnu-1504.9.17131
xnu-1504.9.26131
xnu-1504.9.37131
xnu-1699.22.73131
xnu-1699.22.81131
xnu-1699.24.23131
xnu-1699.26.8131
xnu-1699.32.7131
xnu-2050.22.13131
xnu-2050.24.15131
xnu-2050.48.11131
xnu-2050.7.9131
xnu-2050.9.2131
xnu-2422.1.72131
xnu-2422.100.13131
xnu-2422.110.17131
xnu-2422.90.20131
xnu-2782.1.97131
xnu-2782.10.72131
xnu-2782.20.48131
xnu-2782.30.5131
xnu-3247.10.11131
xnu-3248.20.55131
xnu-3248.30.4131
xnu-3248.40.184131
xnu-3248.50.21131
xnu-3248.60.10131
xnu-3789.21.4131
xnu-3789.31.2131
xnu-3789.41.3131
xnu-3789.51.2131
xnu-3789.60.24131
xnu-3789.70.16131
xnu-4570.20.62131
xnu-4570.31.3131
xnu-4570.41.2131
xnu-4570.51.1131
xnu-4570.61.1131
xnu-4570.71.2131
xnu-4903.231.4131
xnu-4903.241.1131
xnu-4903.270.47131
xnu-6153.101.6131
xnu-6153.121.1131
xnu-6153.141.1131
xnu-6153.41.3131
xnu-6153.61.1131
xnu-6153.81.5131

Exemples

C — non-blocking exclusive lock

if (flock(fd, LOCK_EX | LOCK_NB) == -1) {
    if (errno == EWOULDBLOCK) /* another holder */;
}

Notes

flock(2) pose un verrou consultatif partagé (LOCK_SH) ou exclusif (LOCK_EX) sur le fileglob derrière le fd ; LOCK_UN le libère. Le verrou est associé au fileglob, pas au processus — deux fds issus d'un même dup partagent l'état. macOS l'implémente sur fichiers réguliers, FIFOs et devices mais pas sur la plupart des systèmes de fichiers réseau. Le verrou est consultatif : seuls les processus coopérants qui appellent aussi flock seront bloqués. LOCK_NB rend l'appel non bloquant et retourne EWOULDBLOCK au lieu d'attendre.

Détection

syscall::flock:entry expose les drapeaux d'opération. Endpoint Security n'expose pas d'événement flock. Les verrous longs apparaissent typiquement comme une contention applicative plutôt que comme un signal noyau dédié.

API associées

fcntlopenopenatguarded_open_npsys_flock