C 在给定inode的情况下,是否可以找到套接字(或文件)的修改时间?

C 在给定inode的情况下,是否可以找到套接字(或文件)的修改时间?,c,linux,unix,posix,C,Linux,Unix,Posix,我有一个套接字的inode,例如取自/proc/net/tcp,我希望找到更多关于该套接字的数据,特别是创建或修改时间 我在linux上使用C(2.6内核) 这与问题类似——但这是bash提出的。结论是,没有简单的方法,只能依靠拖网目录进行匹配。我希望有更高效的东西。恐怕不行。文件创建时间未保留,保留的三个日期/时间戳(见man 2 stat)为上次访问时间(atime)、上次修改时间(mtime)和上次文件状态更改时间(ctime) 当需要创建时间时,通常会将其包含在文件名的某个位置,显然不是

我有一个套接字的inode,例如取自/proc/net/tcp,我希望找到更多关于该套接字的数据,特别是创建或修改时间

我在linux上使用C(2.6内核)


这与问题类似——但这是bash提出的。结论是,没有简单的方法,只能依靠拖网目录进行匹配。我希望有更高效的东西。

恐怕不行。文件创建时间未保留,保留的三个日期/时间戳(见man 2 stat)为上次访问时间(atime)、上次修改时间(mtime)和上次文件状态更改时间(ctime)


当需要创建时间时,通常会将其包含在文件名的某个位置,显然不是/proc/net/tcp的选项。

在我研究的系统上,以可访问的方式存储的套接字创建或修改时间似乎很少

可以从/proc/net/tcp中的条目中找到inode,然后在/proc//fd中的所有进程中搜索所有文件句柄以查找匹配项


但这并没有真正的帮助,因为当第一次访问该目录时,那里的时间戳似乎是存在的。i、 e.伪目录仅在查询时创建。

感谢您的澄清。我可能不需要使用修改时间,因此我对问题进行了编辑以反映这一点。我的主要问题是从一个inode到一个stat()类型调用。不太清楚你所说的“一个inode到一个stat()”是什么意思。请注意,stat也可以(在Linux上)作为命令行程序使用,因此您也可以从脚本中使用它,而且它更友好一些。在C语言中,从epoc开始以秒为单位返回日期/时间戳。这对于比较和计算很有用。如果需要查看,请使用localtime()或ctime()。我的意思是“我有一个inode”如何获取有关该文件/套接字的任何时间信息?(如果我按文件名调用stat(),我可能会得到。)有没有一种方法可以执行类似istat(inode,buf)的操作?第一个问题是文件名不保存在inode中,而是保存在目录中。第二个问题是inode编号在系统中不是唯一的,而仅在分区中是唯一的。因此,可以有多个文件具有相同的inode编号。第三个问题是目录权限非常重要,因此我们必须知道许多文件操作的目录。总而言之,我不知道如何仅使用inode编号打开文件,如果有,我可以看到各种问题。还有多个文件指向同一inode的硬链接问题。。