如何使用boost检查文件是否已打开

时间:2015-07-14 11:03:28

标签: c++ boost boost-filesystem

如果文件未打开则如何检查文件是否已使用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
   {

   }
}

1 个答案:

答案 0 :(得分:1)

操作系统的工作是防止/允许这样做。

每个操作系统都有自己的锁定方式供独家使用,在这种情况下,删除操作无论如何都会失败。

其他操作系统(POSIX)将取消链接文件条目与inode,并且文件保持对打开文件的进程保持可访问状态。当最后一次使用inode消失时,文件实际上就被删除了。

简而言之,不要试图预先检测,只看看删除是否失败。否则你将遇到提到的竞争条件

  

您将如何处理在您的支票和尝试删除文件之间打开文件的情况? here

看来你错过了这一点(看到你的回复),迈克解释