Функция
Блокирует доступ к части файла.
Синтаксис
#include<io.h>
int lock(int handle, long offset, long length);
Прототип
io.h
Описание
Функция lock позволяет использовать механизм разделения доступа к файлам введенный в DOS 3.x. Перед использованием этой функции необходимо загрузить SHARE.EXE. С помощью данной функции можно заблокировать любые неперекрывающиеся области файла. Программа, пытающаяся считывать или записывать в блокированной области файла, делает три попытки. Если все три попытки окончились неудачей, то операция заканчивается по ошибке.
Возвращаемое значение
Функция возвращает 0 при успешном завершении и -1 при ошибке.
Переносимость
Функция уникальна для систем DOS версий 3.x. Более ранние версии DOS не поддерживают этих вызовов.
Пример
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <process.h>
#include <share.h>
#include <stdio.h>
int main(void)
{
int handle,status;
long length;
/* для поддержки разделения файлов необходимо предварительно загрузить SHARE.EXE. */
handle = sopen("c:\\autoexec.bat",
O_RDONLY, SH_DENYNO, S_IREAD);
if(!handle)
{
printf("Ошибка при операции sopen");
exit(1);
}
length = filelength(handle);
status = lock(handle,0L,length/2);
if(status == 0)
printf("Успешная операция блокировки");
else
printf("Ошибка при операции блокировки");
status = unlock(handle,0L,length/2);
if(status == 0)
printf("Успешная операция разблокировки");
else
printf("Ошибка при операции разблокировки");
close(handle);
return 0;
}