MKTEMP(3) | Руководство программиста Linux | MKTEMP(3) |
mktemp - создаёт уникальное имя для временного файла
#include <stdlib.h>
char *mktemp(char *template);
Требования макроса тестирования свойств для glibc (смотрите feature_test_macros(7)):
mktemp():
Никогда не используйте эту функцию; см. ДЕФЕКТЫ
Функция mktemp() генерирует на основе шаблона template уникальное имя для временного файла. Последние шесть символов template должны быть равны XXXXXX, они будут заменены на строку, которая сделает имя файла уникальным. Так как template будет меняться, он должен быть объявлен не строковой константой, а массивом символов.
Функция mktemp() всегда возвращает template. При создании уникального имени последние шесть байтов template заменяются так, что имя становится уникальным (то есть, такого имени ещё нет). Если уникальное имя невозможно создать, template будет равно пустой строке, а errno будет назначен код ошибки.
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
mktemp() | Безвредность в нитях | MT-Safe |
4.3BSD, POSIX.1-2001. В POSIX.1-2008 спецификация mktemp() удалена.
Никогда не используйте mktemp(). Некоторые реализации следуют 4.3BSD и заменяют XXXXXX текущим ID процесса и одним символом, поэтому может быть возвращено только 26 уникальных имен. С одной стороны такие имена легко подобрать, а с другой есть вероятность возникновения состязательности при проверке существования имени и открытия файла, поэтому каждое использование mktemp() является угрозой безопасности. Состязательность не может возникнуть, если использовать функции mkstemp(3) и mkdtemp(3).
mktemp(1), mkdtemp(3), mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3)
2017-09-15 | GNU |