Использование имени файла, сгенерированного из mkstempC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование имени файла, сгенерированного из mkstemp

Сообщение Anonymous »


Функция mkstemp() генерирует уникальное временное имя файла из шаблона, создает и открывает файл и возвращает дескриптор открытого файла для файла. Последние шесть символов шаблона должны быть «XXXXXX», и они заменяются строкой, которая делает имя файла уникальным. Поскольку шаблон будет изменен, он не должен быть строковой константой, а должен быть объявлен как массив символов.

После того, как шаблон заменяется строкой, которая делает имя файла уникальным, я сохраняю строку для дальнейшего использования. Здесь я столкнулся со странной проблемой, которую не могу понять. Я могу напечатать правильное имя файла на своем терминале, просмотреть файл в проводнике и открыть его, чтобы увидеть правильное содержимое, но когда я включаю строку как часть команды для выполнения с помощью popen() Я получаю указатель на пустой файл. Однако когда я жестко кодирую имена временных файлов обратно в свой код и запускаю снова, я получаю правильный результат, который ожидал. Есть ли что-то, что я упускаю из виду или упускаю? Вот фрагмент кода:
char tmpname[] = "tmp.XXXXXX"; ФАЙЛ *fpt = fdopen(mkstemp(tmpname), "w"); строка save_tmpname(tmpname); // бла // запись в файл // бла-бла команда const string = «mycommand» + save_tmpname; cout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»