是否可以在选定的文件系统上创建未链接的文件?

时间:2015-03-12 05:39:52

标签: c linux inode

基本上,与在所需文件系统中创建临时文件,打开它,然后取消链接相同的结果。

更好,尽管不太可能,如果可以在不创建其他进程可见的inode的情况下完成此操作。

3 个答案:

答案 0 :(得分:3)

这样做的能力是特定于操作系统的,因为相关的POSIX函数调用所有结果都会生成链接。从版本3.11开始,Linux特别允许在open(2)O_TMPFILE参数中使用flags,以便在给定目录中创建匿名文件。

答案 1 :(得分:1)

您可以使用多种POSIX API:

  • mkstemp - 从中​​生成唯一的临时文件名    模板,创建并打开文件,并返回一个打开的文件    文件的描述符。
  • tmpfile - 以二进制方式打开一个唯一的临时文件    读/写(w + b)模式。该文件将在以下时自动删除    它已关闭或程序终止。

这两个函数在文件系统上创建文件。如果要使用真实文件,则无法避免创建inode。

第一个为您提供文件描述符,用于进行低级系统调用,例如readwrite。第二个为所有FILE* API提供了<stdio.h>

如果您不需要/希望在磁盘上使用实际文件,则应考虑POSIX.1-2008提供的memory stream APIs

  • open_memstream() - 打开一个用于写入缓冲区的流。    缓冲区是动态分配的(与malloc(3)一样),和    根据需要自动增长。

答案 2 :(得分:1)

libtmpfilefd : create a temporary unnamed file 似乎符合您的要求

查看source file此函数创建一个mkstemp的临时文件,然后在

之后立即取消链接文件