9

现在,这个问题可能看起来很奇怪,而且可能很奇怪,但为了提供一些背景信息,我一直在阅读这篇文章以了解 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 */
}

这允许创建一个“隐藏的”临时文件。

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

免责声明:我不打算在实际代码中这样做;我只是(重新)学习 i 节点并想知道这是否可能。

4

1 回答 1

2

恐怕这是不可能的,因为link系统调用需要一个有效的文件名(这意味着一个现有的链接)而不是一个 UNIX 文件描述符。Single UNIX Specification中没有flink函数。

于 2013-04-23T12:43:24.937 回答