[devel] 64-bit fcntl

Mikhail Zabaluev =?iso-8859-1?q?mookid_=CE=C1_sigent=2Eru?=
Пн Окт 16 09:52:46 MSD 2000


Доброе время суток.

Почему fcntl в режиме поддержки 64-битных файловых смещений не хочет
выполнять операцию F_SETLKW (она же F_SETLKW64)? Версия glibc - 2.1.95,
ядра - 2.2.17. Текст тестовой программы приложен.
Интересно, что strace как будто ничего не знает о константе F_SETLKW64:

fcntl(4, 0xe /* F_??? */, 0xbffff800)   = -1 EINVAL (Invalid argument)

-- 
Stay tuned,
  MhZ                                    mailto:mookid на sigent.ru
-----------
"If value corrupts then absolute value corrupts absolutely."
----------- следующая часть -----------
#define _FILE_OFFSET_BITS 64

#include <fcntl.h>
#include <stdio.h>


static struct flock lock = {
		F_WRLCK,
		SEEK_CUR,
		0,
		0,
		0
	};


int main() {

	int fd;

	fd = open("dummy_lockfile", O_WRONLY | O_CREAT, 0644);
	if (fd < 0) {
		perror("Cannot open dummy_lockfile");
		return 1;
	}

	if (fcntl(fd, F_SETLKW, &lock) < 0) {
		perror("F_SETLKW failed");
		return 2;
	}

	return 0;
}


Подробная информация о списке рассылки Devel