FLOCK(2)

BEZEICHNUNG
flock - sperrt und entsperrt Dateien

ÜBERSICHT
#include <sys/file.h>

int flock(int fd, int operation);

BESCHREIBUNG
flock sperrt oder entsperrt eine geöffnete Datei. Der Dateideskriptor wird mittels fd übergeben. Gültige Operationen sind:

    LOCK_SH
        Gemeinsames Sperren. Mehrere Prozesse können eine Datei zur selben Zeit sperren.

    LOCK_EX
        Alleiniges Sperren. Nur ein Prozess kann zu einer Zeit eine Datei sperren.

    LOCK_UN
        Entsperren.

    LOCK_NB
        Die Operation blockiert nicht bis die Sperre gesetzt werden kann, sondern übergibt die Kontrolle sofort wieder an das aufrufende Programm. Diese Option kann durch Bitweises ODER mit anderen Operationen verknüpft werden.

Eine einzelne Datei kann nicht gleichzeitig gemeinsame und alleinige Sperren enthalten.

Es ist nur die Datei (Inode) gesperrt, nicht aber der Dateideskriptor. Dadurch entstehen bei der Benutzung von dup(2) und fork(2) keine Mehrfachsperrungen.

RÜCKGABEWERT
Bei Erfolg gibt die Funktion 0 zurück. Bei Fehlern wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

EWOULDBLOCK
    Die Datei ist gesperrt und es ist LOCK_NB gesetzt.

KONFORM ZU
4.4BSD (Der flock(2) Aufruf ist erstmals in 4.2BSD zu finden).

ANMERKUNGEN
flock(2) funktioniert nicht über NFS. Benutzen Sie stattdessen fcntl(2). Das funktioniert auch über NFS, wenn eine hinreichend aktuelle Version von Linux installiert ist und der Server Sperren unterstützt.

flock(2) und fcntl(2) Sperrungen haben unterschiedliche Auswirkungen auf Prozesse, die fork(2) und dup(2) benutzen.

SIEHE AUCH
open(2), close(2), dup(2), execve(2), fcntl(2), fork(2), lockf(3).

Weiterhin gibt es locks.txt und mandatory.txt im Verzeichnis /usr/src/linux/Documentation.