Получить имя файла, который был создан mkstemp()

Можно ли получить имя файла (и путь) из вызова mkstemp()? А если "да", то как?

2 ответа

Решение

От mkstemp страница справочника:

Последние шесть символов шаблона должны быть "XXXXXX", и они заменяются строкой, которая делает имя файла уникальным. Поскольку он будет изменен, шаблон не должен быть строковой константой, а должен быть объявлен как символьный массив.

Итак, вы объявляете массив и передаете его функции, которая изменит его, а затем у вас есть имя файла в массиве.

Входная строка изменена на имя файла. Следовательно, он не может быть строковым литералом.

POSIX говорит о mkstemp():

#include <stdlib.h>

int mkstemp(char *template);

mkstemp() функция должна заменить содержимое строки, на которую указывает template по уникальному пути и вернуть дескриптор файла для файла, открытого для чтения и записи.... Строка в template должен выглядеть как путь с шестью конечными "X"; mkstemp() заменяет каждый 'X' символом из набора символов переносимого имени файла....

Эта же страница также описывает mkdtemp() который может быть использован для создания временного каталога.

Другие вопросы по тегам