Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

mktemp

유일한 tempoary 파일이름을 만든다.

사용방법

#include <stdlib.h>
char *mktemp(char *template);

설명

mktemp() 함수는 template 로 부터, 유일한 temporary 파일이름을 생성한다. template 는 문자열 마지막에 반드시 여섯개의 X문자를 포함해야 한다. mktemp 함수는 이 여섯개의 문자를 치환해서 유일한 파일이름을 생성한다. mktemp 함수는 template 를 직접 수정하기 때문에 상수(constant)를 쓰면 안된다.

리턴값

mktemp 함수는 template를 리턴한다. 만약 유일한 이름이 생성되었다면 여섯개의 X가 치환된 문자열이 리턴이 된다. 유일한 이름을 만들지 못했다면 빈 문자열을 리턴한다.

에러

  • EINVAL : 마지막 여섯개의 문자가 XXXXXX 가 아니다.

NOTES

mktemp 대신 mkdtemp(3)을 사용하자. mktemp는 위험하다. 몇몇 버전의 함수는 쉽게 예측가능한 시스템의 PID 값으로 template를 대체하기 때문으로, 레이스컨디션 공격대상이 될 수 있다. mkstemp() 함수를 사용하면 레이스컨디션 문제를 피할 수 있다.

mktemp를 포함한 코드를 컴파일 하면 경고메시지를 출력한다.
$ !g
# gcc -o mytemp mytemp.c
/tmp/ccQoR9P0.o: In function `main':
mytemp.c:(.text+0x46): warning: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'

예제

#include <stdlib.h>
#include <stdio.h>


int main(int argc, char **argv)
{
        char fname[10] = "mytemp_XXXXXX\0";
        char *ptr;

        ptr = mktemp(fname);
        printf("%s\n", ptr);
        return 0;
}