I have a problem with file region locking under Linux.
First I start setup to create a file and writelock range 10..30
--------------------------------------------------------------
program setup;

{$mode delphi}{$H+}

Uses    cthreads, Classes, SysUtils, BaseUnix;

Const   Fn      = '/home/anthony/test_lock';
      F_RDLCK = 0;
      F_WRLCK = 1;
      F_UNLCK = 2;

Var     F, I    : Integer;
      Region  : FLock;

Begin
 If FileExists (Fn) Then DeleteFile (Fn);
 F := FpOpen (Fn, O_RDWR Or O_CREAT, $1B6);  // $1B6 = o666
 For I := 0 To 255 Do FpWrite (F, I, 1);
With Region Do Begin
    l_type  := F_WRLCK; l_whence := SEEK_SET;
    l_start := 10;      l_len    := 20
 End;
 If FpFcntl (F, F_SETLK, Region) = -1 Then
    WriteLn ('unable to apply writelock');   //  <-- OK
 Sleep (20000);                              // Sleep 20 Sec
 FpClose (F);
End.
--------------------------------------------------------------------------------------
Then within 20 seconds i start test to obtain a readlock on 80.
This fails. Why? What am I doing wrong?
--------------------------------------------------------------------------------------
program test;

{$mode delphi}{$H+}

Uses    cthreads, Classes, SysUtils, BaseUnix;

Const   Fn      = '/home/anthony/test_lock';
      F_RDLCK = 0;
      F_WRLCK = 1;
      F_UNLCK = 2;

Var     F, I    : Integer;
      Region  : FLock;

Begin
 F := FpOpen (Fn, O_RDWR Or O_CREAT, $1B6);   // $1B6 = o666
With Region Do Begin
    l_type  := F_RDLCK; l_whence := SEEK_SET;
    l_start := 80;      l_len    := 1
 End;
 If FpFcntl (F, F_SETLK, Region) = -1 Then
    WriteLn ('unable to apply readlock on 80');   // <-- Error
 FpClose (F);
End.
------------------------------------------------------------------------------------
Thanks



_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to