如果文件未打开则如何检查文件是否已使用boost打开然后删除该文件其他任何操作
boost::filesystem::wpath file("c://test.txt");
if(boost::filesystem::exists(file))
{
if(here i want a check that file is already open or not, if open then run else)
{
boost::filesystem::remove(file);
}
else
{
}
}
答案 0 :(得分:1)
操作系统的工作是防止/允许这样做。
每个操作系统都有自己的锁定方式供独家使用,在这种情况下,删除操作无论如何都会失败。
其他操作系统(POSIX)将取消链接文件条目与inode,并且文件保持对打开文件的进程保持可访问状态。当最后一次使用inode消失时,文件实际上就被删除了。
简而言之,不要试图预先检测,只看看删除是否失败。否则你将遇到提到的竞争条件
您将如何处理在您的支票和尝试删除文件之间打开文件的情况? here
看来你错过了这一点(看到你的回复),迈克解释