[devel] 64-bit fcntl()
Mikhail Zabaluev
=?iso-8859-1?q?mookid_=CE=C1_sigent=2Eru?=
Ср Дек 6 21:26:54 MSK 2000
Доброе время суток.
"Крупнофайловый" fcntl() с ядром 2.2.17-ipl3mdk и glibc-2.2-ipl1mdk
все-таки ведет себя странно: на F_SETLKW по файлу, залоченному другим
процессом, выдает EAGAIN, как при неблокирующем вызове. Для проверки
прилагаю программку, которую нужно запустить в одном рабочем каталоге
в двух экземплярах (один в background, другой в foreground). При
нормальной работе fcntl() foreground'ный процесс должен зависнуть.
Помогите, люди добрые, ведь Апач с Perl 5.6.0 не работает!
--
Stay tuned,
MhZ mailto:mookid на sigent.ru
----------- следующая часть -----------
#define _FILE_OFFSET_BITS 64
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
static struct flock lock = {
F_WRLCK,
SEEK_CUR,
0L,
0L
};
int main ()
{
static int fd;
fd = open("dummy.lock", O_RDWR | O_CREAT, 0644);
if (fd < 0) {
perror("cannot open lockfile");
return 1;
}
if (fcntl(fd, F_SETLKW, &lock) == -1) {
perror("cannot obtain exclusive lock");
return 2;
}
pause();
close(fd);
return 0;
}
Подробная информация о списке рассылки Devel