Provided by: manpages-ru-dev_4.23.1-1_all bug

ИМЯ

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

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <stdio.h>

       [[deprecated]] char *tmpnam(char *s);
       [[deprecated]] 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()
              C11, POSIX.1-2008.

       tmpnam_r()
              None.

ИСТОРИЯ

       tmpnam()
              SVr4, 4.3BSD, C89, POSIX.1-2001.  Obsolete in POSIX.1-2008.

       tmpnam_r()
              Solaris.

ПРИМЕЧАНИЯ

       Функция 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 (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.

Linux man-pages 6.8                               2 мая 2024 г.                                        tmpnam(3)