Гость Опубликовано 10 июня, 2003 Жалоба Опубликовано 10 июня, 2003 Добрый день! Я попробовал запустить программу /* 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 } Цитата
Гость Опубликовано 17 июня, 2003 Жалоба Опубликовано 17 июня, 2003 Вообще-то есть две блокировки: так называемая exclusive и shared. Посмотри man fcntl. Может там параметры какие-то нужно указывать. Попробуй не лочить, у удалять файл. Shared-блокировка не должна позволить сделать это. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.