Хорошо, mkstemp
- предпочтительный способ создания временного файла в POSIX.
Но он открывает файл и возвращает int
, который является дескриптором файла. Из этого я могу создать только ФАЙЛ *, но не std::ofstream
, который я бы предпочел в C ++. (Очевидно, в AIX и некоторых других системах вы можете создать std::ofstream
из файлового дескриптора, но мой компилятор жалуется, когда я пытаюсь это сделать.)
Я знаю, что могу получить имя временного файла с помощью tmpnam
, а затем открыть свой собственный ofstream с ним, но это явно небезопасно из-за условий гонки и приводит к предупреждению компилятора (g ++ v3.4. В Linux):
warning: the use of `tmpnam' is dangerous, better use `mkstemp'
Итак, есть ли какой-нибудь переносимый способ создания std::ofstream
во временном файле?