我不确定fcntl()
中的第三个arg,我知道当第二个arg发生变化时它会有所不同,并且当第二个arg变为{{1时但是当第二个arg是F_GETLK
等时,第三个arg应该是什么?
从APUE开始,当第二个arg为F_GETFL
时,它为0
非常感谢:)
答案 0 :(得分:1)
fcntl()可以采用可选的第三个参数。是否这个 参数是必需的由cmd决定。必需的参数 每个cmd名称后的括号中都会显示类型(在大多数情况下, 必需的类型是int,我们使用名称标识参数 arg),如果不需要参数,则指定void。
F_SETLK,F_SETLKW和F_GETLK用于获取,释放和测试 对于记录锁的存在(也称为字节范围,文件 - 段或文件区域锁)。第三个参数lock是一个 指向至少包含以下字段的结构的指针(in 未指定的顺序)。
与传统的咨询锁一样,fcntl()的第三个参数, lock,是指向flock结构的指针。与之形成对比 传统的记录锁,该结构的l_pid字段必须是 使用下述命令时设置为零。
此链接可以帮助您解决问题 http://man7.org/linux/man-pages/man2/fcntl.2.html