Namespaces
Variants

std:: tmpnam

From cppreference.net
< cpp ‎ | io ‎ | c
헤더 파일에 정의됨 <cstdio>
char * tmpnam ( char * filename ) ;

현재 존재하는 파일의 이름과 중복되지 않는 고유한 파일명을 생성하여 filename 이 가리키는 문자열에 저장합니다. 이 함수는 최대 TMP_MAX 개의 고유한 파일명을 생성할 수 있지만, 일부 또는 전체가 이미 사용 중일 수 있어 반환값으로 적합하지 않을 수 있습니다.

std::tmpnam 정적 상태를 수정하며 스레드 안전성이 요구되지 않습니다.

목차

매개변수

filename - 최소 L_tmpnam 바이트를 저장할 수 있는 문자 배열에 대한 포인터로, 결과 버퍼로 사용됩니다. 널 포인터가 전달되면 내부 정적 버퍼에 대한 포인터가 반환됩니다

반환값

filename 이 null 포인터가 아닌 경우 filename 을 반환합니다. 그렇지 않은 경우 내부 정적 버퍼에 대한 포인터가 반환됩니다. 적합한 파일명을 생성할 수 없는 경우 null 포인터가 반환됩니다.

참고 사항

std::tmpnam 이 생성하는 이름은 추측하기 어렵지만, std::tmpnam 이 반환된 시점과 프로그램이 반환된 이름을 사용하여 파일을 생성하려는 시점 사이에 다른 프로세스에 의해 해당 이름을 가진 파일이 생성될 가능성이 있습니다. 표준 함수 std::tmpfile 과 POSIX 함수 mkstemp 는 이 문제가 없습니다(표준 C 라이브러리만 사용하여 고유 디렉터리를 생성하려면 여전히 tmpnam 의 사용이 필요합니다).

POSIX 시스템은 추가로 유사한 이름의 함수 tempnam 를 정의하며, 이 함수는 디렉터리 선택 옵션을 제공합니다(기본값은 선택적으로 정의된 매크로 P_tmpdir 입니다).

예제

#include <cstdio>
#include <iostream>
#include <string>
int main()
{
    std::string name1 = std::tmpnam(nullptr);
    std::cout << "temporary file name: " << name1 << '\n';
    char name2[L_tmpnam];
    if (std::tmpnam(name2))
        std::cout << "temporary file name: " << name2 << '\n';
}

가능한 출력:

temporary file name: /tmp/fileDjwifs
temporary file name: /tmp/fileEv2bfW

참고 항목

임시 파일을 생성하고 열며 자동 삭제되는 파일
(함수)
임시 파일에 적합한 디렉토리를 반환함
(함수)