On 10 Nov 2010, at 13:48, MegaBrutal wrote:

Well, my object should keep the lockfile opened as long as it's
working. If the file has already existed, but Rewrite is able to lock
it, that means that my application was shut down improperly. But it's
not a problem. Actually, the operating system should refuse to open
the file if a 2nd thread tries to open it. To sum it up, my code
doesn't work like you assume, that it creates and closes a file, and
it checks for the existence of the file to check whether it can work
on the object; instead it opens the file, and keeps it opened until it
finishes its work, then closes and deletes the file.

The problem is that calling rewrite on an already opened file works fine (at least on Unix platforms). This program runs fine on Mac OS X and Linux:

var
  f: file;
begin
{$i+}
  assign(f, 'test.txt');
  rewrite(f);
  rewrite(f);
end.

That's why I suggested the sysutils route, which enables you to specify the locking policy.


Jonas

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

Reply via email to