这是关于 Linux 的 从文件描述符获取文件名的变体 问题。如果我有一个指向常规文件的文件描述符,我能否通过给它一个新的文件名(当然要在同一设备上)来“保存”该文件描述符?我正在寻找类似于 rename(2) 或 link(2) 的东西,但它将文件描述符作为输入而不是文件名。rename(2) 和 link(2) 的问题在于,即使您可以尝试从文件描述符转到文件名,这也可能失败。我更准确地考虑已经取消链接打开的文件描述符所引用的文件的情况,在这种情况下,该文件没有名称。似乎没有办法防止在关闭() 文件描述符时删除文件。但我错了吗?我们能否使用 Posix 或甚至 Linux API 再次为其命名?
更新:实际上我们可以在Linux的
更新:实际上我们可以在Linux的
/proc/<pid>/fd/<fd>
中查看已删除文件的内容,即使它看起来像是一个损坏的符号链接。但我们不能使用link(2)或ln(1)来重新生成这样的文件,因为它会认为我们正在尝试进行跨设备链接。