std::tmpnam
Материал из cppreference.com
![]() | Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
Определено в заголовочном файле <cstdio> | ||
char* tmpnam(char* filename ); | ||
Создает уникальное имя файла, который не назвать в настоящее время существующий файл и сохраняет его в строку символов, на которую указывает
filename
. Функция способна генерировать до TMP_MAX уникальных имен файлов, но все или некоторые из них, возможно, уже в использовании, и, следовательно, не подходящие значения возврата. Оригинал:
Creates an unique filename that does not name a currently existing file, and stores it in the character string pointed to by
filename
. The function is capable of generating up to TMP_MAX of unique filenames, but some or all of them may already be in use, and thus not suitable return values. Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править]Параметры
filename | — | Указатель на массив символов, способных, владеющих не менее L_tmpnam байт, которые будут использоваться в качестве результата буфера. Если NULL передается указатель на внутренний статический буфер возвращается .Оригинал: pointer to the character array capable of holding at least L_tmpnam bytes, to be used as a result buffer. If NULL is passed, a pointer to an internal static buffer is returned.Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
[править]Возвращаемое значение
filename
если filename
не было NULL. В противном случае указатель на внутренний статический буфер возвращается. Если нет подходящего файла может быть создан, NULL возвращается.Оригинал:
filename
if filename
was not NULL. Otherwise a pointer to an internal static buffer is returned. If no suitable filename can be generated, NULL is returned.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править]Заметки
При вызове с нулевого указателя аргумента, эта функция изменяет глобальный объект. Если другой поток вызывает
std::tmpnam
с нулевого указателя аргумента в то же время, поведение не определено из-за расы данных.Оригинал:
When called with null pointer argument, this function modifies a global object. If another thread calls
std::tmpnam
with null pointer argument at the same time, the behavior is undefined due to a data race.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Хотя имена порожденных
std::tmpnam
трудно догадаться, вполне возможно, что файл с таким именем будет создан другой процесс между моментом std::tmpnam
возвращается и момент эта программа пытается использовать вернулся имя для создания файла. Стандартный std::tmpfile функции и функции POSIX mkstemp не имеют этой проблемы.Оригинал:
Although the names generated by
std::tmpnam
are difficult to guess, it is possible that a file with that name is created by another process between the moment std::tmpnam
returns and the moment this program attempts to use the returned name to create a file. The standard function std::tmpfile and the POSIX function mkstemp do not have this problem.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править]Пример
Запустить этот код
#include <iostream>#include <cstdio>#include <string>int main(){std::string name1 = std::tmpnam(nullptr);std::cout<<"temporary file name: "<< name1 <<'\n'; char name2[L_tmpnam];if(std::tmpnam(name2))std::cout<<"temporary file name: "<< name2 <<'\n';}
Возможный вывод:
temporary file name: /tmp/fileDjwifs temporary file name: /tmp/fileEv2bfW
[править]См. также
создает и открывает временный, автоматическое удаление файлов Оригинал: creates and opens a temporary, auto-removing file Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
Документация C по tmpnam |