gpt4 book ai didi

c++ - 关闭后等待文件删除

转载 作者:太空狗 更新时间:2023-10-29 22:59:22 24 4
gpt4 key购买 nike

我正在研究在 OS X 下用 C/C++ 实现的配额管理器,它限制特定文件夹的最大大小。在我的项目中,有一些通用的线程 worker 可以将新数据写入文件夹或将数据从文件夹移动到服务器。

这样,有时,删除任务可能会删除仍在由另一个线程写入磁盘的文件。

我能以某种方式防止文件在写入过程中被删除吗?我可以实现自己的机制(使用标志、锁等),但我相信它应该是文件系统属性。

我尝试了以下代码来检查文件的删除失败是否仍然打开,但它实际上成功了。

#include <stdio.h> 
int main() {
FILE *fp;
fp=fopen("./x", "w");
fprintf(fp, "Testing...\n");
if( remove( "./x" ) != 0 )
perror( "Error deleting file" );
else
puts( "File successfully deleted" );
return 0;
}

如何在删除之前强制关闭文件?

最佳答案

使用lsof 命令检查打开了哪些文件。 (lsof - 列出打开的文件)

例如,您可以使用 -F p 调用 lsof,它将输出以“p”为前缀的进程的 pid:

$ lsof -F p /some/file
p1234
p4567

引用:lsof man page

关于c++ - 关闭后等待文件删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37098563/

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