> Linux Reviews > man >

mktemp

mktemp


  1. mktemp.3.man


1. mktemp.3.man

Manpage of MKTEMP

MKTEMP

Section: Руководство программиста Linux (3)
Updated: 2010-09-20
Index Return to Main Contents
 

ИМЯ

mktemp - создание уникального имени для временного файла  

ОБЗОР

#include <stdlib.h>

char *mktemp(char *template);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

mktemp():

Начиная с glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE ||
    (_XOPEN_SOURCE >= 500 ||
         _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
    !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
До glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
 

ОПИСАНИЕ

Функция mktemp() генерирует на основе шаблона template уникальное имя для временного файла. Последние шесть символов template должны быть равны XXXXXX, они будут заменены на строку, которая сделает имя файла уникальным. Так как template будет меняться, он должен быть объявлен не строковой константой, а массивом символов.  

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функция mktemp() всегда возвращает template. При создании уникального имени последние шесть байтов template заменяются так, что имя становится уникальным (то есть, такого имени ещё нет). Если уникальное имя невозможно создать, template будет равно пустой строке.  

ОШИБКИ

EINVAL
Последние шесть символов template не равны XXXXXX.
 

СООТВЕТСТВИЕ СТАНДАРТАМ

4.3BSD, POSIX.1-2001. В POSIX.1-2008 спецификация mktemp() удалена.  

ЗАМЕЧАНИЯ

Прототип для libc4, libc5, glibc1 находится в <unistd.h>; glibc2 придерживается Единой Спецификации Unix, поэтому прототип для нее находится в <stdlib.h>.  

ДЕФЕКТЫ

Никогда не используйте mktemp(). Некоторые реализации следуют 4.3BSD и заменяют XXXXXX текущим ID процесса и одним символом, поэтому может быть возвращено только 26 уникальных имен. С одной стороны такие имена легко подобрать, а с другой есть вероятность возникновения состязательности при проверке существования имени и открытия файла, поэтому каждое использование mktemp() является угрозой безопасности. Состязательность не может возникнуть, если использовать функцию mkstemp(3).  

СМОТРИТЕ ТАКЖЕ

mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3)


 

Index

ИМЯ
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СООТВЕТСТВИЕ СТАНДАРТАМ
ЗАМЕЧАНИЯ
ДЕФЕКТЫ
СМОТРИТЕ ТАКЖЕ

This document was created by man2html using the manual pages.
Time: 17:41:49 GMT, May 11, 2012

SVENSKA - SVENSKA - SVENSKA - SVENSKA - ja - pl