如何不在Linux中两次打开文件?

我有一个带有fd的链接列表和一个用来在每个条目中打开此文件的字符串.我只想在尚未打开文件的情况下打开文件并将其添加到此列表中,因为我打开并解析了这些文件,并且不想重复执行两次.我的想法是将文件名与该列表中的每个名称进行比较,但是我的程序会多次执行此操作,而Linux中的一个文件可以具有多个名称(软/硬链接).我认为它应该不那么复杂,因为它易于操作系统检查,是否已经使用了索引节点,r?
我已经尝试使用和不使用flock来打开相同的文件,但是我总是得到一个新的fd.

解决方法:

成功打开文件后,请在文件上使用fstat.检查fstat提交的struct stat的st_ino和st_dev是否已记录在链接列表中.如果是这样,则关闭文件描述符,然后继续下一个文件.否则,将文件描述符,文件名以及st_ino和st_dev值添加到列表中.

您可以改用stat在打开文件之前进行检查,但是如果通常情况下尚未打开文件,则在之后使用fstat会稍快一些.

上一篇:dmesg、stat命令


下一篇:inode知识点【索引节点】