Provided by: manpages-ru-dev_4.21.0-2_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
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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

Linux man-pages 6.03                           29 декабря 2022 г.                                      tmpnam(3)