C 是否可以从打开的文件描述符重新创建文件?

C 是否可以从打开的文件描述符重新创建文件?,c,linux,unix,system,inode,C,Linux,Unix,System,Inode,现在,这个问题可能看起来很奇怪,也许是这样,但为了给大家一些背景知识,我一直在阅读以了解I节点,作者在其中给出了一个有趣的例子: { FILE *fp; fp = fopen("some.hidden.file","w"); unlink("some.hidden.file"); /* deletes the filename part */ /* some.hidden.file no longer has a filename and is truly hidden */

现在,这个问题可能看起来很奇怪,也许是这样,但为了给大家一些背景知识,我一直在阅读以了解I节点,作者在其中给出了一个有趣的例子:

{
  FILE *fp;

  fp = fopen("some.hidden.file","w");
  unlink("some.hidden.file"); /* deletes the filename part */

  /* some.hidden.file no longer has a filename and is truly hidden */
  fprintf(fp,"This data won't be found\n"); /* access the data part */
  /*etc*/
  fclose(fp); /* finally release the data part */
}
这允许创建一个“隐藏”的临时文件

我的问题是:在调用
unlink()
之后,有没有办法重新创建一个指向
fp
打开的inode的文件名


免责声明:我不打算在真实代码中这样做;我只是(重新)了解I节点,想知道这是否可能。

我担心这是不可能的,因为
链接
系统调用需要有效的文件名(即现有链接),而不是UNIX文件描述符。在中没有
flink
函数。

AFAIK,无法为打开的文件描述符命名。从:“如果名称是指向文件的最后一个链接,但任何进程仍将打开该文件,则该文件将保持存在,直到引用它的最后一个文件描述符关闭。”@BartFriederichs:当然,这就是我在链接中解释的。但它并没有真正回答我的问题,更重要的是:“有没有办法在当前打开的“i-node”被销毁之前重新创建一个指向它的文件?”打开的“file”仍将显示在/proc/“pid”/fd/下,我不确定您是否可以从中创建一个(sym)链接。是的,但可能还有其他链接,处理i节点的低级函数。我只是不知道去哪里找;)我会说,你可能非常特定于操作系统,我很快在谷歌上找到了我:(第一次点击,你可能想看得更远一点;我在谷歌上搜索了“内核inode处理”)。