Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux文件租赁-fcntl F_SETLEASE当文件已以冲突方式打开时_Linux - Fatal编程技术网

Linux文件租赁-fcntl F_SETLEASE当文件已以冲突方式打开时

Linux文件租赁-fcntl F_SETLEASE当文件已以冲突方式打开时,linux,Linux,如果我试图在一个文件上设置(比如)F_RDLCK租约,而该文件已经在其他地方打开进行写入,会发生什么 说 读取租约只能放在打开的文件描述符上 只读 这是否意味着它应该是开放的只读系统,否则调用可能会失败?如果是这样,除了使用(IN_CLOSE_WRITE)之外,还有其他方法等待租约生效吗?此呼叫: fcntl(fd, F_SETLEASE, F_RDLCK) 如果基础文件当前已在任何进程中打开以供写入,则将使用EAGAIN(“资源暂时不可用”)失败 对应于手册页的说明: EACCES或EAGA

如果我试图在一个文件上设置(比如)F_RDLCK租约,而该文件已经在其他地方打开进行写入,会发生什么

读取租约只能放在打开的文件描述符上 只读

这是否意味着它应该是开放的只读系统,否则调用可能会失败?如果是这样,除了使用(IN_CLOSE_WRITE)之外,还有其他方法等待租约生效吗?

此呼叫:

fcntl(fd, F_SETLEASE, F_RDLCK)
如果基础文件当前已在任何进程中打开以供写入,则将使用
EAGAIN
(“资源暂时不可用”)失败

对应于手册页的说明:

EACCES或EAGAIN

其他进程持有的锁禁止操作

如果调用方本身打开
fd
进行写入(即不使用
O_RDONLY
标志),这只是此规则的一个特例,
fcntl()
还返回
EAGAIN