.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1999 Andries Brouwer (aeb@cwi.nl) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH tempnam 3 "2 мая 2024 г." "Linux man\-pages 6.8" .SH ИМЯ tempnam \- создаёт имя для временного файла .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBchar *tempnam(const char *\fP\fIdir\fP\fB, const char *\fP\fIpfx\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBtempnam\fP(): .nf начиная с glibc 2.19: _DEFAULT_SOURCE в glibc 2.19 и старее: _BSD_SOURCE || _SVID_SOURCE .fi .SH ОПИСАНИЕ \fIНикогда не используйте эту функцию\fP. Вместо неё используйте \fBmkstemp\fP(3) или \fBtmpfile\fP(3). .P Функция \fBtempnam\fP() возвращает указатель на строку, которая является допустимым именем файла и при этом файл с подобным именем на момент проверки \fBtempnam\fP() не существует. Суффикс сгенерированного имени файла будет начинаться с \fIpfx\fP (при условии, что \fIpfx\fP — не NULL\-строка и содержит не менее пяти байт). Также необходимо, чтобы префикс, состоящий из имён каталогов полного имени файла, был «целесообразным» (чаще всего это подразумевает, как минимум, доступность на запись). .P Попытка найти подходящий каталог делится на следующие шаги: .TP 3 а) Если существует переменная окружения \fBTMPDIR\fP, которая содержит подходящий каталог, то используется она. .TP б) Иначе, если аргумент \fIdir\fP не является NULL и подходящий, то используется он. .TP 3. Иначе используется \fIP_tmpdir\fP (описана в \fI\fP), если она подходит. .TP 4. И, наконец, может быть использован каталог, определённый реализацией функции. .P Память под строку, возвращаемую \fBtempnam\fP(), выделяется с помощью \fBmalloc\fP(3) и в последствии должна быть освобождена с помощью \fBfree\fP(3). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, the \fBtempnam\fP() function returns a pointer to a unique temporary filename. It returns NULL if a unique name cannot be generated, with \fIerrno\fP set to indicate the error. .SH ОШИБКИ .TP \fBENOMEM\fP Не удалось выделить память для строки. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBtempnam\fP() T} Безвредность в нитях MT\-Safe env .TE .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ SVr4, 4.3BSD, POSIX.1\-2001. Obsoleted in POSIX.1\-2008. .SH ПРИМЕЧАНИЯ Хотя \fBtempnam\fP() генерирует имена, которые трудно подобрать, тем не менее, есть вероятность, что за промежуток времени, когда \fBtempnam\fP() вернёт имя файла и программа откроет его, другая программа успеет создать такое же имя с помощью \fBopen\fP(2) или создать символическую ссылку, что может привести к проблемам безопасности. Чтобы исключить подобную вероятность, для открытия имени файла используйте \fBopen\fP(2) с флагом \fBO_EXCL\fP. А ещё лучше \(em воспользуйтесь \fBmkstemp\fP(3) или \fBtmpfile\fP(3). .P В SUSv2 не упоминается использование \fBTMPDIR\fP; в glibc она будет использоваться только в том случае, если у программы не установлен бит set\-user\-ID. В SVr4, используемый каталог для случая \fB4.\fP \(em \fI/tmp\fP (как и для glibc). .P Так как \fBtempnam\fP() динамически выделяет память под возвращаемое имя файла, то она является реентерабельной и, следовательно, безопасной при использовании нитей (в отличие от \fBtmpnam\fP(3)). .P Функция \fBtempnam\fP() генерирует уникальное имя каждый раз, пока не достигнет предела \fBTMP_MAX\fP (определённого в \fI\fP). Если она будет вызвана более чем \fBTMP_MAX\fP раз, то дальнейшее поведение определяется конкретной реализацией. .P \fBtempnam\fP() использует по крайней мере первые пять байт из \fIpfx\fP. .P Реализация \fBtempnam\fP() из glibc завершается ошибкой \fBEEXIST\fP, если не сможет найти уникальное имя. .SH ОШИБКИ Точного определения «целесообразности» не существует. Не определено, каким образом должна определяться доступность каталога. .SH "СМОТРИТЕ ТАКЖЕ" \fBmkstemp\fP(3), \fBmktemp\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал Azamat Hackimov , Dmitry Bolkhovskikh , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .