gpt4 book ai didi

c++ - 以编程方式防止文件被重命名或删除,但仍使其可写

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:26 24 4
gpt4 key购买 nike

<分区>

我有一个应用程序(比方说应用程序 A),我无法控制它,也无法修改它,它写入文件并能够重命名和删除它。

我有另一个应用程序(比方说应用程序 B)正在读取应用程序 A 编写的文件。我可以完全控制应用程序 B 中的代码。

我应该怎么做(即为文件设置什么权限,或者当 App B 打开文件时我应该使用什么锁)以便 App A 可以继续写入文件但不能重命名或删除它。

我尝试在应用程序 B 中使用 fcntl() 对文件设置读写锁,但应用程序 A 仍然可以重命名文件。

这是从应用程序 B 获取锁定的示例代码(fd 是文件的文件描述符):

int fd = open(filePath, O_RDONLY);
struct flock lock_it;
lock_it.l_type = F_WRLCK; // I've tried F_RDLCK as well.
lock_it.l_whence = SEEK_SET;
lock_it.l_start = 0;
lock_it.l_len = 0; // I want to lock the entire file.
int lockingResult = fcntl(fd,F_SETLK,&lock_it);
cout << "Got a fcntl lock: " << lockingResult << " on FD: " << fd << endl;

但是上面的代码并没有阻止App A重命名文件。

有什么想法我该怎么做?我的代码使用 C++,我的应用程序在 RedHat Linux 上运行。

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