Проверка блокировки
При неудачной попытке программы установить блокировку, задав параметр F_SETLK в вызове fcntl, вызов установит значение переменной linuxerror равным Sys_EAGAIN или Sys_EACCESS (в спецификации XSI определены оба эти значения). Если блокировка уже существует, то с помощью команды F_GETLK можно определить процесс, установивший эту блокировку:
uses linux, stdio;
.
.
.
fcntl(fd, F_SETLK, longint(@alock));
if linuxerror <> 0 then
begin
if (linuxerror = Sys EACCES) or (linuxerror = Sys_EAGAIN) then
begin
fcntl(fd, F_GETLK, longint(@b_lock));
writeln(stderr, 'Запись заблокирована процессом ', b_lock.l_pid);
end
else
perror('Ошибка блокировки');
end;