如何使用boost检查文件是否已经打开
How to check if file is already opened using boost
如果文件未打开然后删除该文件,如何使用 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
{
}
}
这是OS到prevent/allow的工作。
每个 OS 都有自己的独占锁定方式,在这种情况下删除无论如何都会失败。
Other OSes (POSIX) 将取消文件条目与 inode 的链接,并且该文件保持对打开文件的进程的可访问性。当最后一次使用 inode 消失时,文件实际上被删除了。
总之,先不要尝试检测,只看是否删除失败。否则你会 运行 进入提到的竞争条件
How are you going to deal with situations, where the file is opened in between your check and your attempt to remove it?
看来你没看懂(看到你的回复),Mike 解释了
如果文件未打开然后删除该文件,如何使用 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
{
}
}
这是OS到prevent/allow的工作。
每个 OS 都有自己的独占锁定方式,在这种情况下删除无论如何都会失败。
Other OSes (POSIX) 将取消文件条目与 inode 的链接,并且该文件保持对打开文件的进程的可访问性。当最后一次使用 inode 消失时,文件实际上被删除了。
总之,先不要尝试检测,只看是否删除失败。否则你会 运行 进入提到的竞争条件
How are you going to deal with situations, where the file is opened in between your check and your attempt to remove it?
看来你没看懂(看到你的回复),Mike 解释了