[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