mktemp 또는 mkstemp 서브루틴

용도

고유한 파일 이름을 생성합니다.

라이브러리

표준 C 라이브러리(libc.a)

Berkeley 호환성 라이브러리(libbsd.a)

구문

#include <stdlib.h>

char *mktemp ( Template)
char *Template;
int mkstemp ( Template)
char *Template;

설명

Mktemp 서브루틴은 Template 매개변수가 가리키는 문자열의 내용을 고유한 파일 이름으로 바꿉니다.

참고: mktemp 서브루틴은 파일 이름을 생성하고 파일이 있는지 확인합니다. 해당 파일이 존재하지 않으면 이름이 반환됩니다. 사용자가 ' mktemp'에 대한 첫 번째 호출에서 반환된 이름을 사용하여 파일을 만들지 않고 ' mktemp '을 두 번 호출하는 경우 두 번째 ' mktemp 호출은 이름이 존재하지 않으므로 첫 번째 ' mktemp ' 호출과 동일한 이름을 반환할 수 있습니다.

이를 방지하려면 mktemp를 호출한 후 파일을 만들거나 mkstemp 서브루틴을 사용하세요. Mkstemp 서브루틴이 파일을 생성합니다.

이 서브루틴의 BSD 버전을 얻으려면 버클리 호환성 라이브러리libbsd.a를 사용하여 컴파일하세요.

Mkstemp 서브루틴은 템플릿 이름에 동일한 치환을 수행하고 읽기 및 쓰기를 위해 파일을 열기도 합니다.

BSD 시스템에서 mkstemp 서브루틴은 임시 이름 생성과 파일 생성 사이의 경합 조건을 피하기 위해 고안되었습니다. 운영 체제에서 이름이 무작위로 생성되기 때문에 이러한 경합 조건이 발생할 가능성이 적습니다. BSD는 / (슬래시)의 파일 이름을 반환합니다.

이전 구현에서는 X를 프로세스 ID와 고유 문자로 대체하여 고유한 이름을 만들었습니다.

매개변수

항목 설명
템플리트 고유한 파일 이름으로 바꿀 문자열을 가리킵니다. 템플릿 매개변수의 문자열은 최대 6개의 후행 X가 포함된 파일 이름입니다. 시스템에서 X를 대체할 6자 문자열을 무작위로 생성하므로 6개의 후행 X를 사용하는 것이 좋습니다.

리턴 값

성공적으로 완료되면 mktemp 서브루틴은 Template 매개변수가 가리키는 문자열의 주소를 반환합니다.

Template 매개변수가 가리키는 문자열에 X가 없고 기존 파일 이름인 경우 Template 매개변수가 널 문자로 설정되고 널 포인터가 반환되며, 문자열이 기존 파일 이름과 일치하지 않는 경우 정확한 문자열이 반환됩니다.

성공적으로 완료되면 mkstemp 서브루틴은 열린 파일 설명자를 반환합니다. Mkstemp 서브루틴이 실패하면 -1 값을 반환합니다.