Как получить временное имя файла?

Я видел несколько сообщений, касающихся моего вопроса, но ни один из них не затрагивал его полностью. Мне нужно создать файл в стандартном временном каталоге и после того, как я закончу в него писать, переместить его в другое место. Идея состоит в том, что файл считается временным во время загрузки и постоянным после завершения загрузки.

Я пытаюсь это сделать, вызвав либо mkstemp , либо tmpfile , затем переименовать после того, как я закончу запись. Однако мне нужен полный путь к файлу для вызова переименования и, по-видимому, получение имени файла из дескриптора файла (, возвращаемого mkstemp )или FILE *(. возвращаемый tmpfile ), не является тривиальным процессом. Это можно сделать, но это не элегантно.

Есть ли системный вызов, который создаст временный файл и предоставит мне имя? Я знаю о mktemp и связанных с ними вызовах, но их уникальность либо не гарантируется, либо они устарели. Или, возможно, есть лучший способ создать, записать и переместить временные файлы.

15
задан cnicutar 17 August 2012 в 15:08
поделиться