Есть несколько POSIX API, в вашем распоряжении:
mkstemp
- генерирует уникальное имя временного файл из шаблона, создает и открывает файл и возвращает открытый файл дескриптор файл.
tmpfile
- открывает уникальный временный файл в двоичном формате режим чтения/записи (w + b). Файл будет автоматически удален, если будет закрыт или программа завершится.
Обе эти функции do создают файлы в файловой системе. Создание inode неизбежно, если вы хотите использовать реальный файл.
Первый дает вам дескриптор файла для создания системы низкого уровня вызовов, как read
и write
. Второй дает вам FILE*
для всех API-интерфейсов <stdio.h>
.
Если вам не нужен/нужен файл на диске, вы должны рассмотреть memory stream APIs, предоставленный POSIX.1-2008.
open_memstream()
- открывает поток для записи в буфер. Буфер динамически распределяется (как с malloc(3)
), и автоматически растет по мере необходимости.
Похоже, что 'O_TMPFILE' фактически используется под капотом, если доступно, для лучшей реализации' tmpfile (3) '(упомянутый в моем ответе). –