基本上,与在所需文件系统中创建临时文件,打开它,然后取消链接相同的结果。
更好,尽管不太可能,如果可以在不创建其他进程可见的inode的情况下完成此操作。
答案 0 :(得分:3)
这样做的能力是特定于操作系统的,因为相关的POSIX函数调用所有结果都会生成链接。从版本3.11开始,Linux特别允许在open(2)
的O_TMPFILE
参数中使用flags
,以便在给定目录中创建匿名文件。
答案 1 :(得分:1)
您可以使用多种POSIX API:
mkstemp
- 从中生成唯一的临时文件名
模板,创建并打开文件,并返回一个打开的文件
文件的描述符。tmpfile
- 以二进制方式打开一个唯一的临时文件
读/写(w + b)模式。该文件将在以下时自动删除
它已关闭或程序终止。这两个函数都在文件系统上创建文件。如果要使用真实文件,则无法避免创建inode。
第一个为您提供文件描述符,用于进行低级系统调用,例如read
和write
。第二个为所有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
的临时文件,然后在