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

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Стандартная библиотека языка C (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()
              Отсутствуют.

ИСТОРИЯ

       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> и Kirill Rekhov <krekhov.dev@gmail.com>

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

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

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                        tmpnam(3)