[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Библиотечная функция lockf(3C)

Библиотечная функция lockf(3C) проще, чем fcntl(2). Однако, она не
обеспечивает всех функциональных возможностей системного вызова. В
частности, она допускает только захват по изменению.
lockf(3C)  не   использует  структуру  захвата.  Записи  захватываются
относительно  текущей  позиции  файла.  Поэтому  перед  использованием
lockf(3C) необходимо установить позицию файла в нужное место.

Аргументы lockf(3C):
fildes    дескриптор  файла,  обычно  получают  с  помощью  системного
          вызова open(2).

function  функция  захвата.   Она  аналогична   команде  в   fcntl(2).
          Возможные  значения   функции   обсуждаются   на   следующей
          странице.

size      размер записи  от текущей  позиции файла. Отрицательный size
          говорит о  том, что  запись ограничивается  текущей позицией
          сзади. Если  size равен  нулю,  захватывается  весь  остаток
          файла, от  текущей позиции  и до  конца (даже  если конец  и
          будет меняться в дальнейшем).

Замечание по поводу текущего указателя и fork(2): После вызова fork(2)
порожденный процесс не наследует захватов родительского процесса.
Однако, родительский и порожденный процесс совместно используют общие
указатели в файлах. Если они оба устанавливают захваты в одном и том
же файле, есть вероятность, что один установит захват после того, как
другой изменил текущий указатель файла. В этом случае порожденный
процесс должен закрыть и вновь открыть файл. Тогда у порожденного
процесса будет отдельный указатель файла.
                    БИБЛИОТЕЧНАЯ ФУНКЦИЯ lockf(3C)
lockf(3C)

ИМЯ

      lockf - захват записи в файле

ИСПОЛЬЗОВАНИЕ

      #include <unistd.h>

      int lockf (int fildes,
           int function, long size);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - 0

      неуспех - -1 и errno установлена