Tempnam tmpnam


Tempnam tmpnam

tempnam — create a name for a temporary file

SYNOPSIS

DESCRIPTION

The tempnam() function shall generate a pathname that may be used for a temporary file.

The tempnam() function allows the user to control the choice of a directory. The dir argument points to the name of the directory in which the file is to be created. If dir is a null pointer or points to a string which is not a name for an appropriate directory, the path prefix defined as P_tmpdir in the header shall be used. If that directory is not accessible, an implementation-defined directory may be used.

Many applications prefer their temporary files to have certain initial letter sequences in their names. The pfx argument should be used for this. This argument may be a null pointer or point to a string of up to five bytes to be used as the beginning of the filename.

Some implementations of tempnam() may use tmpnam() internally. On such implementations, if called more than times in a single process, the behavior is implementation-defined.

RETURN VALUE

Upon successful completion, tempnam() shall allocate space for a string, put the generated pathname in that space, and return a pointer to it. The pointer shall be suitable for use in a subsequent call to free(). Otherwise, it shall return a null pointer and set errno to indicate the error.

ERRORS

[ENOMEM] Insufficient storage space is available.

EXAMPLES

Generating a Pathname

The following example generates a pathname for a temporary file in directory /tmp, with the prefix file. After the filename has been created, the call to free() deallocates the space used to store the filename.

APPLICATION USAGE

This function only creates pathnames. It is the application’s responsibility to create and remove the files. Between the time a pathname is created and the file is opened, it is possible for some other process to create a file with the same name. Applications may find tmpfile() more useful.

RATIONALE

FUTURE DIRECTIONS

SEE ALSO

CHANGE HISTORY

First released in Issue 1. Derived from Issue 1 of the SVID.

Issue 5

The last paragraph of the DESCRIPTION was included as an APPLICATION USAGE note in previous issues.

tempnam, tmpnam, tmpfile, mktemp, mkstemp

Здравствуйте. Мне нужно сгенерировать временное имя файла, которое затем будет передано ассемблеру (as), как имя выходного файла. Какую из сабжевых функций лучше использовать? Как избежать возможности того, что кто-то угадает имя файла и создаст символическую ссылку с таким именем, указывающую на какие-нибудь важные файлы пользователя, запустившего программу? Правильно ли я понимаю, что в данном случае не получится использовать функции, которые возвращают FILE* или файл-дескриптор (int), решая предыдущий вопрос?

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

tmpfile возвращает FILE*.

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

А как мне передать FILE* внешней программе (ассемблеру), чтобы он выводил результат (объектный код) в указанный файл?

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

можно использовать сишные ф-ии из ассемблера, с этим, как правило нет проблем. + имхо лучше исползовать ф-ю, возвращающуу fd, а не FILE*, благо какая-то из tmp* ф-й это реализует(не помню какая именно, в маны лезть банально лень). если всё же упёрто хочется использовать FILE*, то передать его легко, благо это всего лишь поинтер. + есть в этом списке функций вроде бы и такая, которая генерит только имя в char*, можно использовать и её.

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

т.е. не изменяя ассемблер (в моё мслучае это GNU Assembler) безопасно задачу решить невозможно?

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

На самом деле задача странная. Придумать имя файла, а потом отдать его ассемблеру, чтобы он его типа создал — это явный race. В чём заключается настоящая задача, в рамках решения которой ты думаешь, что тебе это надо?

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

Задача следующая — мне не хочется заставлять пользователя запускать компилятор, ассемблер и линкер отдельно каждый раз. Это неудобно. Поэтому, если компилятору не были переданы особые ключи (не ассемблировать или не линковать), то результат компиляции (ассемблерный код) будет перенаправлен на stdin ассемблера. Мне не известно, как сделать так, чтобы ассемблер выводил результат своей работы (объектный код) на stdout и как заставить линкер (ld) принимать объектные файлы с stdin. Значит надо создавать промежуточный файл, в который будет записываться объектный код. Но для этого надо придумать имя, которое будет подставлено после ключа «-o» в параметрах ассемблера.

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

Создаешь временную директорию с помощью mkdtemp (не вполне портабельно, но в топике и *BSD есть, вроде бы), делаешь chdir в нее, далее можешь вообще не париться с безопасностью имен.

на системах без mkdtemp задача, наверное, не решается никак (если нужна 100% надежность). Разве что в начале исполнения требовать, чтобы cwd уже была директорией с 0700, принадлежащей юзеру, иначе вырубаться.

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

> Задача следующая — мне не хочется заставлять пользователя запускать компилятор, ассемблер и линкер отдельно каждый раз. Это неудобно.

1. Каждый раз когда что? Чем там таким у тебя пользователь занимается, что ему приходится вручную вызывать компилятор, ассемблер и линкер постоянно?

2. А почему бы пользователю не набрать команду make и не париться?

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

Если gcc передать только имя исходника (gcc test.c), то он автоматически его откомпилирует (создаст /tmp/XXXXXXXX.s), потом отассемблирует (создаст /tmp/XXXXXXXX.o) и слинкует (создаст a.out), после чего всё подчистит за собой. Это удобно при компиляции небольших программ, состоящих всего из одного файла, писать для которых Makefile нет смысла. Я хочу сделать похожее поведение для своего компилятора.

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

Вопрос: программа такая-то делает так-то, я хочу, чтобы моя программа делала точно так же.

Ответ: посмотри исходники этой программы и возьми, что тебе надо, оттуда.

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

> Придумать имя файла, а потом отдать его ассемблеру, чтобы он его типа создал — это явный race.

Не обязательно. Если сам же его атомарно создаешь open+O_EXCL, то все будет хорошо.

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

Перечитай то, что ты отквотировал, пожалуйста. Там нет места варианту, о котором ты говоришь. as создаёт без O_EXCL. Так трудно сначала подумать, а потом демонстрировать, что ты уже прочитал man 2 open?

Илон Маск рекомендует:  Что такое код setviewportorg

Re: tempnam, tmpnam, tmpfile, mktemp, mkstemp

>Так трудно сначала подумать

>as создаёт без O_EXCL

Для медленно соображающих разжевываю :) Процесс может сгенерировать любое имя. Атомарно создать — с помощью open+O_EXCL. При коллизии имен — сгенерировать новое имя. Потом предложить as в него писать. Ни в каком месте тут race нет.

tempnam — Создаёт файл с уникальным именем

(PHP 4, PHP 5, PHP 7)

tempnam — Создаёт файл с уникальным именем

Описание

Создаёт файл с уникальным именем в определённой директории с правами 0600. Если эта директория не существует, tempnam() может создать файл во временной директории системы и вернуть полный путь к этому файлу, включая его имя.

Список параметров

Директория, где будет создан временный файл.

Префикс имени генерируемого файла.

Замечание: Windows использует только первые три символа из указанного префикса.

Возвращаемые значения

Возвращает имя нового временного файла (вместе с путем) или FALSE в случае неудачи.

Список изменений

Версия Описание
4.0.3 Поведение функции изменилось начиная с версии PHP 4.0.3. Временный файл также создаётся чтобы избежать состояния гонки, когда файл может появится в файловой системе между моментом генерации строки и моментом, когда скрипт начнёт его создавать. Обратите внимание, что вы должны удалить файл вручную, если он больше вам не нужен — этот процесс не автоматизирован.

Примеры

Пример #1 Пример использования функции tempnam()

= tempnam ( «/tmp» , «FOO» );

$handle = fopen ( $tmpfname , «w» );
fwrite ( $handle , «записываем в во временный файл» );
fclose ( $handle );

// здесь мы чего-нибудь делаем

Примечания

Замечание: Если PHP не может создать файл в указанной директории dir , он возвращается к директории по умолчанию вашей системы. На NTFS это также происходит в случае если указанная директория dir содержит более 65534 файлов.

Смотрите также

  • tmpfile() — Создаёт временный файл
  • sys_get_temp_dir() — Возвращает путь к директории временных файлов
  • unlink() — Удаляет файл

tmpnam warning saying it is dangerous

I get this warning saying that tmpnam is dangerous, but I would prefer to use it, since it can be used as is in Windows as well as Linux. I was wondering why it would be considered dangerous (I’m guessing it’s because of the potential for misuse rather than it actually not working properly).

5 Answers 5

From tmpnam manpage :

The tmpnam() function generates a different string each time it is called, up to TMP_MAX times. If it is called more than TMP_MAX times, the behavior is implementation defined.

Although tmpnam() generates names that are difficult to guess, it is nevertheless possible that between the time that tmpnam() returns a pathname, and the time that the program opens it, another program might create that pathname using open(2), or create it as a symbolic link. This can lead to security holes. To avoid such possibilities, use the open(2) O_EXCL flag to open the pathname. Or better yet, use mkstemp(3) or tmpfile(3).

Mktemp really create the file, so you are assured it works, whereas tmpnam returns a name, possibly already existing.

Tempnam tmpnam

Представленная ниже страница, лишь часть огромного сайта посвященного различной компьютерной документации, на сайте собрано более 800 мб информации. Если Вы не нашли в этой статье, то что Вы ищите попробуте посмотреть здесь, cпросить на форуме или поискать необходимую Вам информацию в нашем каталоге ссылок сайтов компьтерной тематики.

Если же Вы хотите приобрести бумажную копию представленных здесь
материалов, обращайтесь в наш книжный магазин.

С уважением,
команда разработчиков eManual.ru

TMPNAM(3S)

НАЗВАНИЕ
tmpnam, tempnam — создание имен временных файлов

ОПИСАНИЕ
С помощью этих функций создаются имена, которые можно без опасений использовать для именования временных файлов.

Функция tmpnam всегда образует имя файла, используя маршрутный префикс, определяемый константой P_tmpdir во включаемом файле . Если указатель s пустой (равен NULL), то функция помещает результат во внутреннюю статическую область и возвращает адрес этой области. При следующем вызове tmpnam содержимое статической области изменится. Если s не равно NULL, то его значение рассматривается как адрес массива длины не менее L_tmpnam байт, где L_tmpnam — константа, определенная в ; функция помещает результат в этот массив и возвращает s.

Функция tempnam дает пользователю возможность выбирать каталог. Аргумент dir указывает на имя каталога, в котором нужно создать файл. Если dir равен NULL или ссылается на цепочку символов, не являющуюся именем подходящего каталога, то имя строится с использованием константы P_tmpdir. Если и этот каталог недоступен, в качестве последнего шанса будет использован /tmp. Указанная последовательность действий игнорируется, если определена переменная окружения TMPDIR; именно ее значение задает имя каталога временных файлов.

Во многих случаях предпочтительны имена файлов, начинающиеся определенной последовательностью символов. Для создания таких имен предусмотрен аргумент pfx. Этот аргумент может иметь значение NULL или быть ссылкой на цепочку длиной до 5 символов, которая должна использоваться в качестве первых символов имени временного файла.

Функция tempnam вызывает функцию malloc(3C) для получения области памяти под конструируемое имя, и возвращает ссылку на эту область. Таким образом, значение указателя, возвращаемого функцией tempnam, может служить аргументом функции free [см. malloc(3C)]. Если tempnam по каким-либо причинам не может возвратить ожидаемый результат (например, неудачно завершилась функция malloc или не удалось найти подходящий каталог), то возвращается пустой указатель.

ПРИМЕЧАНИЯ
При каждом обращении эти функции создают новое имя.

Файлы, созданные с помощью описанных функций и функций fopen(3S) или creat(2), являются временными только в том смысле, что они хранятся в каталоге, предназначенном для временного использования, и их имена уникальны. Для удаления этих файлов, когда в них отпала необходимость, пользователь должен применить системный вызов unlink(2).

ОГРАНИЧЕНИЯ
При вызове более 17576 раз в одном процессе эти функции начнут циклически выдавать уже созданные ранее имена.

Tempnam tmpnam

НАЗВАНИЕ
tmpnam, tempnam — создание имен временных файлов

ОПИСАНИЕ
С помощью этих функций создаются имена, которые можно без опасений использовать для именования временных файлов.

Функция tmpnam всегда образует имя файла, используя маршрутный префикс, определяемый константой P_tmpdir во включаемом файле . Если указатель s пустой (равен NULL), то функция помещает результат во внутреннюю статическую область и возвращает адрес этой области. При следующем вызове tmpnam содержимое статической области изменится. Если s не равно NULL, то его значение рассматривается как адрес массива длины не менее L_tmpnam байт, где L_tmpnam — константа, определенная в ; функция помещает результат в этот массив и возвращает s.

Функция tempnam дает пользователю возможность выбирать каталог. Аргумент dir указывает на имя каталога, в котором нужно создать файл. Если dir равен NULL или ссылается на цепочку символов, не являющуюся именем подходящего каталога, то имя строится с использованием константы P_tmpdir. Если и этот каталог недоступен, в качестве последнего шанса будет использован /tmp. Указанная последовательность действий игнорируется, если определена переменная окружения TMPDIR; именно ее значение задает имя каталога временных файлов.

Во многих случаях предпочтительны имена файлов, начинающиеся определенной последовательностью символов. Для создания таких имен предусмотрен аргумент pfx. Этот аргумент может иметь значение NULL или быть ссылкой на цепочку длиной до 5 символов, которая должна использоваться в качестве первых символов имени временного файла.

Функция tempnam вызывает функцию malloc(3C) для получения области памяти под конструируемое имя, и возвращает ссылку на эту область. Таким образом, значение указателя, возвращаемого функцией tempnam, может служить аргументом функции free [см. malloc(3C)]. Если tempnam по каким-либо причинам не может возвратить ожидаемый результат (например, неудачно завершилась функция malloc или не удалось найти подходящий каталог), то возвращается пустой указатель.

ПРИМЕЧАНИЯ
При каждом обращении эти функции создают новое имя.

Файлы, созданные с помощью описанных функций и функций fopen(3S) или creat(2), являются временными только в том смысле, что они хранятся в каталоге, предназначенном для временного использования, и их имена уникальны. Для удаления этих файлов, когда в них отпала необходимость, пользователь должен применить системный вызов unlink(2).

ОГРАНИЧЕНИЯ
При вызове более 17576 раз в одном процессе эти функции начнут циклически выдавать уже созданные ранее имена.

tempnam()

tempnam() — temporary file routine

SYNOPSIS

DESCRIPTION

The tempnam(3) function is similar to tmpnam(3) in that it returns a pointer to a pathname of a file that does not exist at the time of the call. Unlike tmpnam(3), you can specify the directory that will contain the file (dir) if there is no defined temporary directory, and you can specify the filename’s prefix, (pfx).

The tempnam(3) function also looks to use different directories by default than does tmpnam(3). It determines the directory for the file using the following steps:

  1. The directory used is the directory defined by TMPDIR if it is writeable.
  2. If the previous step does not produce a usable directory, then the directory used is the directory specified by the dir argument if it exists and is writeable.
  3. If the previous step does not produce a usable directory, then the directory used is the directory specified by P_tmpdir as declared in stdio.h if it exists and is writeable.
  4. If the previous step does not produce a usable directory, then the function attempts to use /tmp.

The argument pfx, if non-NULL, is used to specify a file name prefix, which will be the first part of the created file name. The pfx can be up to five characters long.

Tempnam(3) allocates space for the string; the pointer can be used in a call to free(3).

RETURN VALUES

The tempnam(3) function returns a pointer to a file name on success, and a NULL pointer on error.

ERRORS

The tempnam(3) function may fail and set the global variable errno for this reason:

[ENOMEM] There isn’t enough memory.

NOTES

Using tempnam(3) is discouraged for these reasons:

  1. There can be a race between file name selection and file name creation.
  2. There is no specification for the minimum number of unique temporary names; some implementations generate as few as 26 before recycling.
  3. Some implementations use access(2) to determine whether the temp file may be created. this can cause problems for use with setuid(2) and setgid(2) programs.

Tempnam tmpnam

If you need to use a temporary file in your program, you can use the tmpfile function to open it. Or you can use the tmpnam (better: tmpnam_r ) function to provide a name for a temporary file and then you can open it in the usual way with fopen .

The tempnam function is like tmpnam but lets you choose what directory temporary files will go in, and something about what their file names will look like. Important for multi-threaded programs is that tempnam is reentrant, while tmpnam is not since it returns a pointer to a static buffer.

These facilities are declared in the header file stdio.h .

Function: FILE * tmpfile (void)

Preliminary: | MT-Safe | AS-Unsafe heap lock | AC-Unsafe mem fd lock | See POSIX Safety Concepts.

This function creates a temporary binary file for update mode, as if by calling fopen with mode «wb+» . The file is deleted automatically when it is closed or when the program terminates. (On some other ISO C systems the file may fail to be deleted if the program terminates abnormally).

This function is reentrant.

When the sources are compiled with _FILE_OFFSET_BITS == 64 on a 32-bit system this function is in fact tmpfile64 , i.e., the LFS interface transparently replaces the old interface.

Function: FILE * tmpfile64 (void)

Preliminary: | MT-Safe | AS-Unsafe heap lock | AC-Unsafe mem fd lock | See POSIX Safety Concepts.

This function is similar to tmpfile , but the stream it returns a pointer to was opened using tmpfile64 . Therefore this stream can be used for files larger than 2^31 bytes on 32-bit machines.

Please note that the return type is still FILE * . There is no special FILE type for the LFS interface.

If the sources are compiled with _FILE_OFFSET_BITS == 64 on a 32 bits machine this function is available under the name tmpfile and so transparently replaces the old interface.

Function: char * tmpnam (char * result )

Preliminary: | MT-Unsafe race:tmpnam/!result | AS-Unsafe | AC-Safe | See POSIX Safety Concepts.

This function constructs and returns a valid file name that does not refer to any existing file. If the result argument is a null pointer, the return value is a pointer to an internal static string, which might be modified by subsequent calls and therefore makes this function non-reentrant. Otherwise, the result argument should be a pointer to an array of at least L_tmpnam characters, and the result is written into that array.

It is possible for tmpnam to fail if you call it too many times without removing previously-created files. This is because the limited length of the temporary file names gives room for only a finite number of different names. If tmpnam fails it returns a null pointer.

Warning: Between the time the pathname is constructed and the file is created another process might have created a file with the same name using tmpnam , leading to a possible security hole. The implementation generates names which can hardly be predicted, but when opening the file you should use the O_EXCL flag. Using tmpfile or mkstemp is a safe way to avoid this problem.

Function: char * tmpnam_r (char * result )

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

This function is nearly identical to the tmpnam function, except that if result is a null pointer it returns a null pointer.

This guarantees reentrancy because the non-reentrant situation of tmpnam cannot happen here.

Warning: This function has the same security problems as tmpnam .

Macro: int L_tmpnam

The value of this macro is an integer constant expression that represents the minimum size of a string large enough to hold a file name generated by the tmpnam function.

Macro: int TMP_MAX

The macro TMP_MAX is a lower bound for how many temporary names you can create with tmpnam . You can rely on being able to call tmpnam at least this many times before it might fail saying you have made too many temporary file names.

With the GNU C Library, you can create a very large number of temporary file names. If you actually created the files, you would probably run out of disk space before you ran out of names. Some other systems have a fixed, small limit on the number of temporary files. The limit is never less than 25 .

Function: char * tempnam (const char * dir , const char * prefix )

Preliminary: | MT-Safe env | AS-Unsafe heap | AC-Unsafe mem | See POSIX Safety Concepts.

This function generates a unique temporary file name. If prefix is not a null pointer, up to five characters of this string are used as a prefix for the file name. The return value is a string newly allocated with malloc , so you should release its storage with free when it is no longer needed.

Because the string is dynamically allocated this function is reentrant.

The directory prefix for the temporary file name is determined by testing each of the following in sequence. The directory must exist and be writable.

  • The environment variable TMPDIR , if it is defined. For security reasons this only happens if the program is not SUID or SGID enabled.
  • The dir argument, if it is not a null pointer.
  • The value of the P_tmpdir macro.
  • The directory /tmp .

This function is defined for SVID compatibility.

Warning: Between the time the pathname is constructed and the file is created another process might have created a file with the same name using tempnam , leading to a possible security hole. The implementation generates names which can hardly be predicted, but when opening the file you should use the O_EXCL flag. Using tmpfile or mkstemp is a safe way to avoid this problem.

SVID Macro: char * P_tmpdir

This macro is the name of the default directory for temporary files.

Older Unix systems did not have the functions just described. Instead they used mktemp and mkstemp . Both of these functions work by modifying a file name template string you pass. The last six characters of this string must be ‘ XXXXXX ’. These six ‘ X ’s are replaced with six characters which make the whole string a unique file name. Usually the template string is something like ‘ /tmp/ prefix XXXXXX ’, and each program uses a unique prefix .

NB: Because mktemp and mkstemp modify the template string, you must not pass string constants to them. String constants are normally in read-only storage, so your program would crash when mktemp or mkstemp tried to modify the string. These functions are declared in the header file stdlib.h .

Function: char * mktemp (char * template )

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

The mktemp function generates a unique file name by modifying template as described above. If successful, it returns template as modified. If mktemp cannot find a unique file name, it makes template an empty string and returns that. If template does not end with ‘ XXXXXX ’, mktemp returns a null pointer.

Warning: Between the time the pathname is constructed and the file is created another process might have created a file with the same name using mktemp , leading to a possible security hole. The implementation generates names which can hardly be predicted, but when opening the file you should use the O_EXCL flag. Using mkstemp is a safe way to avoid this problem.

Function: int mkstemp (char * template )

Preliminary: | MT-Safe | AS-Safe | AC-Safe fd | See POSIX Safety Concepts.

The mkstemp function generates a unique file name just as mktemp does, but it also opens the file for you with open (see Opening and Closing Files). If successful, it modifies template in place and returns a file descriptor for that file open for reading and writing. If mkstemp cannot create a uniquely-named file, it returns -1 . If template does not end with ‘ XXXXXX ’, mkstemp returns -1 and does not modify template .

The file is opened using mode 0600 . If the file is meant to be used by other users this mode must be changed explicitly.

Unlike mktemp , mkstemp is actually guaranteed to create a unique file that cannot possibly clash with any other program trying to create a temporary file. This is because it works by calling open with the O_EXCL flag, which says you want to create a new file and get an error if the file already exists.

Function: char * mkdtemp (char * template )

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

The mkdtemp function creates a directory with a unique name. If it succeeds, it overwrites template with the name of the directory, and returns template . As with mktemp and mkstemp , template should be a string ending with ‘ XXXXXX ’.

If mkdtemp cannot create an uniquely named directory, it returns NULL and sets errno appropriately. If template does not end with ‘ XXXXXX ’, mkdtemp returns NULL and does not modify template . errno will be set to EINVAL in this case.

The directory is created using mode 0700 .

The directory created by mkdtemp cannot clash with temporary files or directories created by other users. This is because directory creation always works like open with O_EXCL . See Creating Directories.

Tempnam tmpnam

tempnam — создаёт файл с уникальным именем.

Описание

string tempnam (string dir, string prefix)

Создаёт файл с уникальным именем filename в специфицированной директории. Если директория не существует, tempnam() может генерировать файл в системной временной директории и возвращать её имя.

До PHP 4.0.6 поведение функции tempnam() зависело от системы. В Windows переменная окружения TMP переопределяет параметр dir , в Linux переменная окружения TMPDIR имеет приоритет, а в SVR4 всегда используется ваш параметр dir , если директория, на которую он указывает, существует. При сомнениях проконсультируйтесь в вашей системной документации о функции tempnam(3).

Возвращает новый временный filename, или строку FALSE при неудаче.

Пример 1. tempnam()

Примечание: поведение этой функции изменилось в 4.0.3. Создаётся также временный файл, чтобы исключить race-условие, где файл может появиться в файловой системе в период между генерацией строки и до созданием файла скриптом. Заметьте, что вам нужно удалить файл, если он вам больше не нужен, это не будет сделано автоматически.

tmpnam

Returns a string containing a file name different from the name of any existing file, and thus suitable to safely create a temporary file without risking to overwrite an existing file.

If str is a null pointer, the resulting string is stored in an internal static array that can be accessed by the return value. The content of this string is preserved at least until a subsequent call to this same function, which may overwrite it.

If str is not a null pointer, it shall point to an array of at least L_tmpnam characters that will be filled with the proposed temporary file name.

The file name returned by this function can be used to create a regular file using fopen to be used as a temporary file. The file created this way, unlike those created with tmpfile is not automatically deleted when closed; A program shall call remove to delete this file once closed.

Parameters

Return Value

Example

This program will generate two different names for temporary files. Each one has been created by one of the two methods in which tmpnam can be used.

Илон Маск рекомендует:  Инструкции ВКонтакте
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL