Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Добрый день!

Я попробовал запустить программу /* ex_03.c */, расположенную по адресу http://cgi.linuxfocus.org/Russian/September2001/article198.shtml,но блокировка файлов с помощью функции fcntl не устанавливается, то есть программа работает успешно, но во время блокирования файла второй экземпляр программы благополучно "устанавливает" блокировку для записи.

Подскажите, пожалуйста, может в ядре моего Linux чего-то не хватает для блокировки?

Благодарю за внимание.

Вот текст программы.

1 /* ex_03.c */

2 #include

3 #include

4 #include

5 #include

6 #include

7 #include

8

9 int

10 main (int argc, char * argv [])

11 {

12 int i;

13 int fd;

14 char buffer [2];

15 struct flock lock;

16

17 for (i = 1; i < argc; i ++) {

18 fd = open (argv , O_RDWR | O_CREAT, 0644);

19 if (fd < 0) {

20 fprintf (stderr, "Невозможно открыть %s\n", argv );

21 exit(EXIT_FAILURE);

22 }

23 lock . l_type = F_WRLCK;

24 lock . l_whence = SEEK_SET;

25 lock . l_start = 0;

26 lock . l_len = 0;

27 if (fcntl (fd, F_SETLK, & lock) < 0) {

28 fprintf (stderr, "Невозможно заблокировать %s\n", argv );

29 exit(EXIT_FAILURE);

30 }

31 }

32 fprintf (stdout, "Нажмите Ввод для снятия блокировки(ок)\n");

33 fgets (buffer, 2, stdin);

34 exit(EXIT_SUCCESS);

35 }

Опубликовано

Вообще-то есть две блокировки: так называемая exclusive и

shared. Посмотри man fcntl. Может там параметры какие-то нужно указывать.

Попробуй не лочить, у удалять файл. Shared-блокировка не должна позволить сделать это.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...