是否可以在选定的文件系统上创建未链接的文件?
Is it possible to create an unlinked file on a selected filesystem?
基本上,与在所需文件系统中创建临时文件、打开它然后取消链接的结果相同。
如果不创建对其他进程可见的 inode 就可以做到这一点,那就更好了,尽管不太可能。
有几个 POSIX API 可供您使用:
mkstemp
- 从中生成一个唯一的临时文件名
模板,创建并打开文件,returns 一个打开的文件
文件的描述符。
tmpfile
- 打开一个唯一的二进制临时文件
read/write (w+b) 模式。该文件将被自动删除时
它已关闭或程序终止。
这两个函数 do 在文件系统上创建文件。如果要使用真实文件,创建inode是不可避免的。
第一个为您提供了一个 文件描述符 用于进行低级系统调用,例如 read
和 write
。第二个为所有 <stdio.h>
API 提供 FILE*
。
如果您没有 need/desire 磁盘上的 实际 文件,您应该考虑 POSIX 提供的 memory stream APIs。1- 2008.
open_memstream()
- 打开用于写入缓冲区的流。
缓冲区是动态分配的(与 malloc(3)
一样),并且
根据需要自动增长。
libtmpfilefd : create a temporary unnamed file 似乎可以满足您的要求
查看 source file 此函数使用 mkstemp
创建一个临时文件,然后在
之后立即取消链接该文件
这样做的能力是 OS 特定的,因为相关的 POSIX 函数调用都会导致生成 link。 Linux 特别允许,自版本 3.11 起,在 open(2)
的 flags
参数中使用 O_TMPFILE
以便在给定目录中创建匿名文件。
基本上,与在所需文件系统中创建临时文件、打开它然后取消链接的结果相同。
如果不创建对其他进程可见的 inode 就可以做到这一点,那就更好了,尽管不太可能。
有几个 POSIX API 可供您使用:
mkstemp
- 从中生成一个唯一的临时文件名 模板,创建并打开文件,returns 一个打开的文件 文件的描述符。tmpfile
- 打开一个唯一的二进制临时文件 read/write (w+b) 模式。该文件将被自动删除时 它已关闭或程序终止。
这两个函数 do 在文件系统上创建文件。如果要使用真实文件,创建inode是不可避免的。
第一个为您提供了一个 文件描述符 用于进行低级系统调用,例如 read
和 write
。第二个为所有 <stdio.h>
API 提供 FILE*
。
如果您没有 need/desire 磁盘上的 实际 文件,您应该考虑 POSIX 提供的 memory stream APIs。1- 2008.
open_memstream()
- 打开用于写入缓冲区的流。 缓冲区是动态分配的(与malloc(3)
一样),并且 根据需要自动增长。
libtmpfilefd : create a temporary unnamed file 似乎可以满足您的要求
查看 source file 此函数使用 mkstemp
创建一个临时文件,然后在
这样做的能力是 OS 特定的,因为相关的 POSIX 函数调用都会导致生成 link。 Linux 特别允许,自版本 3.11 起,在 open(2)
的 flags
参数中使用 O_TMPFILE
以便在给定目录中创建匿名文件。