栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

os.path.exists()位于

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

os.path.exists()位于

os.path.exists()
只是调用C库的
stat()
函数。

我相信您正在内核NFS实现中的高速缓存中运行。以下是指向该页面的链接,该页面描述了该问题以及一些刷新缓存的方法。

文件句柄缓存

目录将文件名缓存到文件句柄映射。 最常见的问题是:

•您有一个打开的文件,需要检查该文件是否已被较新的文件替换。您必须先刷新父目录的文件句柄缓存,然后stat()返回新文件的信息,而不返回打开文件的信息。

◦实际上,这种情况还存在另一个问题:旧文件可能已被删除,并被新文件替换,但是两个文件可能具有相同的inode。您可以通过刷新打开文件的属性高速缓存,然后查看fstat()是否因ESTALE失败而检查这种情况。

•您需要检查文件是否存在。例如一个锁定文件。内核可能已缓存该文件不存在,即使实际上确实存在。您必须刷新父目录的负文件句柄缓存,以查看该文件是否确实存在。

刷新文件句柄缓存的几种方法:

•如果父目录的mtime更改,则通过刷新其属性缓存来刷新文件句柄缓存。如果NFS服务器支持纳秒或微秒的分辨率,则此方法应该可以很好地工作。

•Linux:将目录chown()分配给当前所有者。如果调用成功返回,则刷新文件句柄缓存。

•Solaris
9、10:唯一方法是尝试使用rmdir()父目录。ENOTEMPTY表示已刷新缓存。尝试rmdir()当前目录失败,并显示EINVAL,并且不刷新缓存。

•FreeBSD
6.2:唯一方法是尝试使用rmdir()父目录或其下的文件。ENOTEMPTY,ENOTDIR和EACCES故障意味着缓存已刷新,但ENOENT并未刷新它。FreeBSD不缓存否定条目,因此不必刷新它们。

http://web.archive.org/web/20100912144722/http://www.unixcoding.org/NFSCoding



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号