Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

       tmpnam, tmpnam_r - создаёт имя для временного файла

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <stdio.h>

       char *tmpnam(char *s);
       char *tmpnam_r(char *s);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       tmpnam_r()
           Since glibc 2.19:
               _DEFAULT_SOURCE
           Up to and including glibc 2.19:
               _BSD_SOURCE || _SVID_SOURCE

ОПИСАНИЕ

       Замечание: не используйте эти функции; вместо них используйте mkstemp(3) или tmpfile(3).

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

       Созданное  имя  файла содержит префикс каталога P_tmpdir (L_tmpnam и P_tmpdir определены в
       <stdio.h> также, как TMP_MAX, описанная ниже).

       Функция tmpnam_r() выполняет ту же задачу, что и tmpnam(), но  возвращает  NULL  (возникла
       ошибка), если s равно NULL.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       Эти  функции  возвращают  указатель  на  уникальное  имя временного файла, либо NULL, если
       уникальное имя невозможно сгенерировать.

ОШИБКИ

       Ошибок не предполагается.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌───────────────────────────────────────┬──────────────────────┬──────────────────────────┐
       │ИнтерфейсАтрибутЗначение                 │
       ├───────────────────────────────────────┼──────────────────────┼──────────────────────────┤
       │tmpnam()                               │ Безвредность в нитях │ MT-Unsafe race:tmpnam/!s │
       ├───────────────────────────────────────┼──────────────────────┼──────────────────────────┤
       │tmpnam_r()                             │ Безвредность в нитях │ MT-Safe                  │
       └───────────────────────────────────────┴──────────────────────┴──────────────────────────┘

СТАНДАРТЫ

       tmpnam(): SVr4, 4.3BSD, C99, POSIX.1-2001.  POSIX.1-2008 marks tmpnam()  as obsolete.

       Функция tmpnam_r() является нестандартным расширением, но доступна и  в  некоторых  других
       системах.

ЗАМЕЧАНИЯ

       Функция  tmpnam() генерирует уникальное имя каждый раз, до TMP_MAX вызовов. Если она будет
       вызвана  более  чем  TMP_MAX  раз,  то  дальнейшее   поведение   определяется   конкретной
       реализацией.

       Хотя  эти  функции  генерируют  имена,  которые  трудно  подобрать,  тем  не  менее,  есть
       вероятность, что за промежуток времени, когда вернётся имя файла и программа откроет  его,
       другая программа успеет создать с помощью open(2) файл с таким же именем или символическую
       ссылку,  что  может  привести  к  проблемам  с  безопасностью.  Чтобы  исключить  подобную
       вероятность,  для  открытия  файла  используйте  open(2)  с  флагом  O_EXCL. А ещё лучше —
       воспользуйтесь mkstemp(3) или tmpfile(3).

       Если  определён  _POSIX_THREADS  или  _POSIX_THREAD_SAFE_FUNCTIONS,   то   в   переносимых
       приложениях с нитями нельзя вызывать tmpnam() с аргументом NULL.

ДЕФЕКТЫ

       Никогда не используйте эти функции. Вместо них используйте mkstemp(3) или tmpfile(3).

СМ. ТАКЖЕ

       mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства    был    сделан   Azamat   Hackimov
       <azamat.hackimov@gmail.com>,  Dmitry  Bolkhovskikh  <d20052005@yandex.ru>,   Yuri   Kozlov
       <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.