Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

dopmat / block1 / testlocks

.c
Скачиваний:
12
Добавлен:
15.03.2015
Размер:
1.31 Кб
Скачать
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>

int main(int argc, char * argv[])
{
  int fd; 
  char str[64];
  memset(str, 32, 64);
  struct flock fi;
  int off;
  sprintf(str, "Запись сделана процессом %i", getpid());
  fd = open("testlocks.txt", O_RDWR|O_CREAT);
  fi.l_type = F_WRLCK; //блокировка записи
  fi.l_whence = SEEK_SET; //с начала файла
  fi.l_start = 0; //нач. смещение
  fi.l_len = 64; //кол-во байт для блокировки
  	off = 0;
  while (fcntl(fd, F_SETLK, &fi) == -1) //установка блокировки
  {
     fcntl(fd, F_GETLK, &fi); //описание блокировки
     printf("байты %i - %i заблокированы процессом %i\n", off, off+64, fi.l_pid);
     off += 64; //увеличение нач. смещения
     fi.l_start = off;
  }
  lseek(fd, off, SEEK_SET); //установка смещения от начала файла
  write(fd, str, strlen(str)); //запись в файл
  getchar(); //ввод символа из потока ввода
  fi.l_type = F_UNLCK; //снятие блокировки
  if (fcntl(fd, F_SETLK, &fi) == -1)
    printf("Ошибка разблокирования\n");
  close(fd);
} 
Соседние файлы в папке block1