【发布时间】:2012-06-16 11:09:31
【问题描述】:
我在我的 ubuntu 机器上执行了以下 c 代码...我已经阅读了 fcntl() 用于锁定文件的信息,如果设置了 F_WRLCK 选项,则即使读取也将不允许。 ..所以我启动了这个程序,在放弃锁定之前按回车键我尝试以两种方式打开文件 - 直接双击 file1.cpp 并在新的 c 程序中运行终端...打开文件的时间...那么 fcntl() 如何在设置 F_WRLCK 时允许打开这些文件...
int main(int argc, char *argv[])
{
struct flock fl = {F_WRLCK, SEEK_SET, 0, 0, 0 };
int fd;
fl.l_pid = getpid();
if ((fd = open("/home/file1.cpp", O_WRONLY)) == -1)
{
perror("open");
exit(1);
}
if (fcntl(fd, F_SETLKW, &fl) == -1)
{
perror("fcntl");
exit(1);
}
printf("Press <RETURN> to release lock: ");
getchar();
fl.l_type = F_UNLCK; /* set to unlock same region */
if (fcntl(fd, F_SETLK, &fl) == -1)
{
perror("fcntl");
exit(1);
}
printf("Unlocked.\n");
close(fd);
return 0;
}
【问题讨论】:
标签: c file file-locking