gpt4 book ai didi

c - 如何检查文件是否被锁定?

转载 作者:太空狗 更新时间:2023-10-29 17:23:42 25 4
gpt4 key购买 nike

我有以下代码,我想在其中检查文件是否被锁定。如果没有,那么我想写信给它。我通过在两个终端上同时运行它们来运行这段代码,但即使我没有锁定它,我每次在两个选项卡中总是获得“锁定”状态。代码如下:

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

int main()
{
struct flock fl,fl2;
int fd;

fl.l_type = F_WRLCK; /* read/write lock */
fl.l_whence = SEEK_SET; /* beginning of file */
fl.l_start = 0; /* offset from l_whence */
fl.l_len = 0; /* length, 0 = to EOF */
fl.l_pid = getpid(); /* PID */

fd = open("locked_file", O_RDWR | O_EXCL | O_CREAT);
fcntl(fd, F_GETLK, &fl2);
if(fl2.l_type!=F_UNLCK)
{
printf("locked");
}
else
{
fcntl(fd, F_SETLKW, &fl); /* set lock */
write(fd,"hello",5);
usleep(10000000);
}
printf("\n release lock \n");

fl.l_type = F_UNLCK;
fcntl(fd, F_SETLK, &fl); /* unset lock */
}

最佳答案

非常简单,只需使用 F_GETLK 而不是 F_SETLK 运行 fnctl。这会将您指针处的数据设置为锁的当前状态,您可以通过访问 l_type 属性查看它是否被锁定。

请参阅:http://linux.die.net/man/2/fcntl了解详情。

关于c - 如何检查文件是否被锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21917962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com