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

标签 c linux unix system inode

现在,这个问题可能看起来很奇怪,而且可能确实如此,但为了提供一些背景信息,我一直在阅读 this了解 i-nodes,作者给出了一个有趣的例子:

{
  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 节点并想知道这是否可能。

最佳答案

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

关于c - 是否可以从打开的文件描述符重新创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16169149/

相关文章:

java - 'MaxRAM' JVM 参数表示什么?

linux - 查找,grep gzipped 文件

java - 如何使用java程序执行oraenv脚本?

unix - Hudson 触发器远程构建会出现禁止的 403 错误

Linux 阻塞 udp 套接字收不到

linux - zsh:如何在不删除文件夹的情况下删除文件夹中的内容?

c - C 中的特殊 #define 选项

c - 我在 C 中使用 gmp,但下一个素数不起作用?我正在尝试生成 rsa key

c - IF 循环中的算术运算

ios - 在 Objective-C 中使用太多静态变量是一种不好的做法吗?