[<<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 установлена