tempnam(3) - wariua/manpages-ko GitHub Wiki

NAME

tempnam - μž„μ‹œ 파일 이름 λ§Œλ“€κΈ°

SYNOPSIS

#include <stdio.h>

char *tempnam(const char *dir, const char *pfx);

glibc κΈ°λŠ₯ 확인 맀크둜 μš”κ±΄ (feature_test_macros(7) μ°Έκ³ ):

tempnam():
glibc 2.19λΆ€ν„°:
_DEFAULT_SOURCE
glibc 2.19 및 이전:
_BSD_SOURCE || _SVID_SOURCE

DESCRIPTION

이 ν•¨μˆ˜λ₯Ό μ ˆλŒ€ μ“°μ§€ 말 것. λŒ€μ‹  mkstemp(3)λ‚˜ tmpfile(3)을 μ‚¬μš©ν•˜λΌ.

tempnam() ν•¨μˆ˜λŠ” μœ νš¨ν•œ 파일λͺ…인 λ¬Έμžμ—΄μ— λŒ€ν•œ 포인터λ₯Ό λ°˜ν™˜ν•œλ‹€. tempnam()μ—μ„œ ν™•μΈν•˜λŠ” μ‹œμ μ—λŠ” κ·Έ μ΄λ¦„μœΌλ‘œ 된 파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. pfxκ°€ μ΅œλŒ€ λ‹€μ„― λ°”μ΄νŠΈμ˜ NULL μ•„λ‹Œ λ¬Έμžμ—΄μΈ 경우 생성 경둜λͺ…μ˜ 파일λͺ… 뢀뢄이 pfx둜 μ‹œμž‘ν•˜κ²Œ λœλ‹€. 생성 경둜λͺ…μ˜ 디렉터리 뢀뢄이 "적절"ν•΄μ•Ό (보톡 적어도 μ“°κΈ° κ°€λŠ₯ν•΄μ•Ό) ν•œλ‹€.

μ μ ˆν•œ 디렉터리λ₯Ό μ°ΎκΈ° μœ„ν•΄ λ‹€μŒ 단계λ₯Ό κ±°μΉœλ‹€.

a) ν™˜κ²½ λ³€μˆ˜ TMPDIR이 μ‘΄μž¬ν•˜μ—¬ μ μ ˆν•œ 디렉터리 이름을 λ‹΄κ³  μžˆλŠ” κ²½μš°μ—λŠ” κ·Έκ±Έ μ“΄λ‹€.

b) μ•„λ‹ˆλ©΄, dir μΈμžκ°€ NULL이 μ•„λ‹ˆκ³  μ μ ˆν•˜λ©΄ κ·Έκ±Έ μ“΄λ‹€.

c) μ•„λ‹ˆλ©΄, (<stdio.h>에 μ •μ˜λœ) P_tmpdir이 μ μ ˆν•˜λ©΄ κ·Έκ±Έ μ“΄λ‹€.

d) λ§ˆμ§€λ§‰μœΌλ‘œ, κ΅¬ν˜„μ—μ„œ μ •ν•œ 디렉터리λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

tempnam()이 λ°˜ν™˜ν•˜λŠ” λ¬Έμžμ—΄μ€ malloc(3)으둜 ν• λ‹Ήν•œ κ²ƒμ΄λ―€λ‘œ free(3)둜 ν•΄μ œν•΄ μ€˜μ•Ό ν•œλ‹€.

RETURN VALUE

성곡 μ‹œ tempnam() ν•¨μˆ˜λŠ” μœ μΌν•œ μž„μ‹œ 파일λͺ…에 λŒ€ν•œ 포인터λ₯Ό λ°˜ν™˜ν•œλ‹€. μœ μΌν•œ 이름을 생성할 수 μ—†λŠ” 경우 NULL을 λ°˜ν™˜ν•˜λ©° 였λ₯˜ 원인을 λ‚˜νƒ€λ‚΄λ„λ‘ errnoλ₯Ό μ„€μ •ν•œλ‹€.

ERRORS

ENOMEM
μ €μž₯ 곡간 할당에 μ‹€νŒ¨ν–ˆλ‹€.

ATTRIBUTES

이 μ ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄λ“€μ— λŒ€ν•œ μ„€λͺ…은 attributes(7)λ₯Ό 보라.

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
tempnam() μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Safe env

CONFORMING TO

SVr4, 4.3BSD, POSIX.1-2001. POSIX.1-2008μ—μ„œ tempnam()을 κ΅¬μ‹μœΌλ‘œ ν‘œμ‹œν•˜μ˜€λ‹€.

NOTES

tempnam()이 μΆ”μΈ‘ν•˜κΈ° μ–΄λ €μš΄ 이름을 λ§Œλ“€μ–΄ λ‚΄κΈ°λŠ” ν•˜μ§€λ§Œ κ·Έλž˜λ„ tempnam()이 경둜λͺ…을 λ°˜ν™˜ν•˜λŠ” μ‹œμ κ³Ό ν”„λ‘œκ·Έλž¨μ—μ„œ κ·Έ 경둜λͺ…을 μ—¬λŠ” μ‹œμ  사이에 λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ΄ open(2)μœΌλ‘œλ‚˜ 심볼릭 링크 ν˜•νƒœλ‘œ κ·Έ 경둜λͺ…을 λ§Œλ“€μ–΄ λ‚Ό μˆ˜λ„ μžˆλ‹€. 그리고 그게 λ³΄μ•ˆ μ·¨μ•½μ μœΌλ‘œ μ΄μ–΄μ§ˆ 수 μžˆλ‹€. 그런 κ°€λŠ₯성을 ν”Όν•˜λ €λ©΄ 경둜λͺ…을 μ—΄ λ•Œ open(2)의 O_EXCL ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. λ˜λŠ” 더 λ°”λžŒμ§ν•˜κ²ŒλŠ” mkstemp(3)λ‚˜ tmpfile(3)을 μ“°λ©΄ λœλ‹€.

SUSv2μ—μ„œλŠ” TMPDIR μ‚¬μš©μ„ μ–ΈκΈ‰ν•˜κ³  μžˆμ§€ μ•Šλ‹€. glibcμ—μ„œλŠ” ν”„λ‘œκ·Έλž¨μ΄ set-user-IDκ°€ 아닐 λ•Œλ§Œ μ“΄λ‹€. SVr4μ—μ„œ d) 단계에 μ“°λŠ” λ””λ ‰ν„°λ¦¬λŠ” /tmp이닀. (glibcμ—μ„œλ„ κ·Έλ ‡λ‹€.)

경둜λͺ…을 λ°˜ν™˜ν•˜λŠ” 데 μ“°λŠ” λ©”λͺ¨λ¦¬λ₯Ό λ™μ μœΌλ‘œ ν• λ‹Ήν•˜κΈ° λ•Œλ¬Έμ— tempnam()은 μž¬μ§„μž… κ°€λŠ₯ν•˜λ©°, λ”°λΌμ„œ tmpnam(3)κ³Ό 달리 μŠ€λ ˆλ“œμ— μ•ˆμ „ν•˜λ‹€.

tempnam() ν•¨μˆ˜λŠ” (<stdio.h>에 μ •μ˜λœ) TMP_MAX λ²ˆκΉŒμ§€λŠ” 호좜 λ•Œλ§ˆλ‹€ λ‹€λ₯Έ λ¬Έμžμ—΄μ„ λ§Œλ“€μ–΄ λ‚Έλ‹€. TMP_MAX 번 λ„˜κ²Œ ν˜ΈμΆœν•˜λŠ” 경우의 λ™μž‘ 방식은 κ΅¬ν˜„μ—μ„œ κ·œμ •ν•œλ‹€.

tempnam()은 pfx 처음의 μ΅œλŒ€ λ‹€μ„― λ°”μ΄νŠΈλ₯Ό μ‚¬μš©ν•œλ‹€.

tempnam()의 glibc κ΅¬ν˜„μ—μ„œλŠ” μœ μΌν•œ 이름을 μ°ΎλŠ” 데 μ‹€νŒ¨ν•œ 경우 EEXIST 였λ₯˜λ‘œ μ‹€νŒ¨ν•œλ‹€.

BUGS

"적절"의 μ •ν™•ν•œ μ˜λ―Έκ°€ κ·œμ •λΌ μžˆμ§€ μ•Šλ‹€. 디렉터리 μ ‘κ·Ό κ°€λŠ₯ μ—¬λΆ€λ₯Ό μ–΄λ–»κ²Œ νŒλ‹¨ν•˜λŠ”μ§€ λͺ…세돼 μžˆμ§€ μ•Šλ‹€.

SEE ALSO

mkstemp(3), mktemp(3), tmpfile(3), tmpnam(3)


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️