lock

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu io.h - Index


Header-Datei

io.h

Kategorie

Eingabe-/Ausgaberoutinen

Prototyp

int lock(int handle, long offset, long length);

Beschreibung

Legt Sperren für die gemeinsame Nutzung von Dateien fest.

lock stellt eine Schnittstelle für den Betriebssystemmechanismus zur gemeinsamen Nutzung von Dateien zur Verfügung.

In jeder Datei können beliebige, sich nicht überlappende Bereiche mit einer Sperre versehen werden. Programme, die versuchen, Lese- oder Schreiboperationen in einem gesperrten Bereich auszuführen, wiederholen diesen Versuch drei Mal. Wenn alle drei Versuche fehlschlagen, wird die Operation abgebrochen und eine Fehlermeldung ausgegeben.

Rückgabewert

Bei erfolgreicher Ausführung gibt lock 0 zurück. Im Fehlerfall gibt die Funktion lock -1 zurück und weist der globalen Variablen errno den folgenden Wert zu:

EACCES

Locking violation (Sperrverletzung)



Beispiel



 #include <io.h>
 #include <fcntl.h>
 #include <sys\stat.h>;
 #include <process.h>
 #include <share.h>
 #include <stdio.h>
 int main(void)
 {
    int handle, status;
    long length;
    handle = _sopen("c:\\autoexec.bat",
       O_RDONLY,SH_DENYNO,S_IREAD);
    if (handle < 0)
    {
       printf("_sopen failed\n");
       exit(1);
    }
    length = filelength(handle);
    status = lock(handle,0L,length/2);
    if (status == 0)
       printf("lock succeeded\n");
    else
       printf("lock failed\n");
    status = unlock(handle,0L,length/2);
    if (status == 0)
       printf("unlock succeeded\n");
    else
       printf("unlock failed\n");
    close(handle);
    return 0;
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

+