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

NAME

mkstemp, mkostemp, mkstemps, mkostemps - μœ μΌν•œ μž„μ‹œ 파일 λ§Œλ“€κΈ°

SYNOPSIS

#include <stdlib.h>

int mkstemp(char *template);

int mkostemp(char *template, int flags);

int mkstemps(char *template, int suffixlen);

int mkostemps(char *template, int suffixlen, int flags);

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

mkstemp():
_XOPEN_SOURCE >= 500
|| /* glibc 2.12λΆ€ν„°: */ _POSIX_C_SOURCE >= 200809L
|| /* glibc 버전 <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
mkostemp():
_GNU_SOURCE
mkstemps():
/* glibc 2.19λΆ€ν„°: */ _DEFAULT_SOURCE
|| /* glibc 버전 <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
mkostemps():
_GNU_SOURCE

DESCRIPTION

mkstemp() ν•¨μˆ˜λŠ” template을 κ°€μ§€κ³  μœ μΌν•œ μž„μ‹œ 파일λͺ…을 λ§Œλ“€μ–΄ λ‚΄κ³ , κ·Έ νŒŒμΌμ„ μƒμ„±ν•΄μ„œ μ—΄κ³ , κ·Έ νŒŒμΌμ— λŒ€ν•œ μ—΄λ¦° 파일 λ””μŠ€ν¬λ¦½ν„°λ₯Ό λ°˜ν™˜ν•œλ‹€.

template의 λ§ˆμ§€λ§‰ μ—¬μ„― κΈ€μžκ°€ "XXXXXX"μ—¬μ•Ό ν•˜λ©° κ·Έ κΈ€μžλ“€μ„ λ°”κΏ”μ„œ 파일λͺ…을 μœ μΌν•˜κ²Œ λ§Œλ“ λ‹€. 변경이 μ΄λ€„μ§€λ―€λ‘œ template이 λ¬Έμžμ—΄ μƒμˆ˜μ—¬μ„œλŠ” μ•ˆ 되며 문자 λ°°μ—΄λ‘œ μ„ μ–Έν•˜λŠ” 게 μ’‹λ‹€.

0600 κΆŒν•œμœΌλ‘œ νŒŒμΌμ„ μƒμ„±ν•œλ‹€. 즉 μ†Œμœ μžμ—κ²Œλ§Œ 읽기 및 μ“°κΈ° κΆŒν•œμ΄ μžˆλ‹€. λ°˜ν™˜λ˜λŠ” 파일 λ””μŠ€ν¬λ¦½ν„°λ₯Ό 톡해 νŒŒμΌμ— 읽기 및 μ“°κΈ° 접근을 ν•  수 μžˆλ‹€. open(2)의 O_EXCL ν”Œλž˜κ·Έλ₯Ό μ¨μ„œ νŒŒμΌμ„ μ—΄κΈ° λ•Œλ¬Έμ— ν˜ΈμΆœμžκ°€ νŒŒμΌμ„ μƒμ„±ν•œ ν”„λ‘œμ„ΈμŠ€λΌλŠ” 게 보μž₯λœλ‹€.

mkostemp() ν•¨μˆ˜λŠ” mkstemp()와 λΉ„μŠ·ν•˜λ˜ flags에 (open(2)μ—μ„œμ™€ μ˜λ―Έκ°€ 같은) λΉ„νŠΈ O_APPEND, O_CLOEXEC, O_SYNCλ₯Ό μ§€μ •ν•  수 μžˆλ‹€λŠ” 점이 λ‹€λ₯΄λ‹€. 참고둜 mkostemp()μ—μ„œ νŒŒμΌμ„ λ§Œλ“€ λ•Œ flags μΈμžμ— O_RDWR, O_CREAT, O_EXCL 값을 ν¬ν•¨μ‹œμΌœμ„œ open(2)에 μ€€λ‹€. λ”°λΌμ„œ mkostemp()의 flags μΈμžμ— κ·Έ 값듀을 ν¬ν•¨μ‹œν‚€λŠ” 것은 λΆˆν•„μš”ν•˜λ©° μ–΄λ–€ μ‹œμŠ€ν…œμ—μ„œλŠ” 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

mkstemps() ν•¨μˆ˜λŠ” mkstemp()와 λΉ„μŠ·ν•˜λ˜ template의 λ¬Έμžμ—΄μ— suffixlen 개 문자만큼의 μ ‘λ―ΈλΆ€κ°€ μžˆλ‹€λŠ” 점이 λ‹€λ₯΄λ‹€. 즉 template이 prefixXXXXXXsuffix ν˜•νƒœμ΄λ©° mkstemp()μ—μ„œμ²˜λŸΌ λ¬Έμžμ—΄ XXXXXXκ°€ λ³€κ²½λœλ‹€.

mkostemps() ν•¨μˆ˜μ™€ mkstemps()의 κ΄€κ³„λŠ” mkostemp()와 mkstemp()의 관계와 κ°™λ‹€.

RETURN VALUE

성곡 μ‹œ 이 ν•¨μˆ˜λ“€μ€ μž„μ‹œ 파일의 파일 λ””μŠ€ν¬λ¦½ν„°λ₯Ό λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

EEXIST
μœ μΌν•œ μž„μ‹œ 파일λͺ…을 λ§Œλ“€ 수 μ—†λ‹€. μ΄λ•Œ template의 λ‚΄μš©μ€ κ·œμ •λΌ μžˆμ§€ μ•Šλ‹€.
EINVAL

mkstemp() 및 mkostemp(): template의 λ§ˆμ§€λ§‰ μ—¬μ„― κΈ€μžκ°€ XXXXXXκ°€ μ•„λ‹ˆλ‹€. μ΄λ•Œ template은 λ°”λ€Œμ§€ μ•ŠλŠ”λ‹€.

mkstemps() 및 mkostemps(): template의 길이가 (6 + suffixlen) κΈ€μžλ³΄λ‹€ μž‘κ±°λ‚˜ template의 μ ‘λ―ΈλΆ€ μ•ž λ§ˆμ§€λ§‰ 6 κΈ€μžκ°€ XXXXXXκ°€ μ•„λ‹ˆλ‹€.

이 ν•¨μˆ˜λ“€μ΄ open(2)μ—μ„œ κΈ°μˆ ν•˜λŠ” 였λ₯˜λ“€ λ•Œλ¬Έμ— μ‹€νŒ¨ν•  μˆ˜λ„ μžˆλ‹€.

VERSIONS

glibc 2.7λΆ€ν„° mkostemp()κ°€ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. glibc 2.11λΆ€ν„° mkstemps()와 mkostemps()κ°€ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

ATTRIBUTES

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

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
mkstemp(), mkostemp(),
mkstemps(), mkostemps()
μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Safe

CONFORMING TO

mkstemp(): 4.3BSD, POSIX.1-2001.

mkstemps(): ν‘œμ€€ν™” μ•ˆ 됨. ν•˜μ§€λ§Œ λ‹€λ₯Έ μ—¬λŸ¬ μ‹œμŠ€ν…œμ— 있음.

mkostemp() 및 mkostemps(): glibc ν™•μž₯μž„.

NOTES

glibc 버전 2.06 및 μ΄μ „μ—μ„œλŠ” 0666 κΆŒν•œ, 즉 λͺ¨λ“  μ‚¬μš©μž 읽기 및 μ“°κΈ°λ‘œ νŒŒμΌμ„ μƒμ„±ν•œλ‹€. 이 ꡬ식 λ™μž‘ 방식이 λ³΄μ•ˆ μœ„ν—˜ μš”μ†ŒμΌ μˆ˜λ„ μžˆλ‹€. λ‹€λ₯Έ μœ λ‹‰μŠ€ κ³„μ—΄μ—μ„œλŠ” 0600을 μ‚¬μš©ν•˜λŠ”λ° ν”„λ‘œκ·Έλž¨μ„ ν¬νŒ… ν•  λ•Œ 이 μ„ΈλΆ€ 사항을 κ°„κ³Όν•  μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€. 0600 λͺ¨λ“œλ‘œ νŒŒμΌμ„ 생성해야 ν•œλ‹€λŠ” μš”κ΅¬ 사항이 POSIX.1-2008에 좔가됐닀.

더 일반적으둜 mkstemp()의 POSIX λͺ…μ„Έμ—μ„œλŠ” 파일 λͺ¨λ“œμ— λŒ€ν•΄ 아무것도 μ–ΈκΈ‰ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ‘μš©μ—μ„œ mkstemp()λ₯Ό (λ˜λŠ” mkostemp()λ₯Ό) ν˜ΈμΆœν•˜κΈ° 전에 파일 λͺ¨λ“œ 생성 마슀크(umask(2) μ°Έκ³ )κ°€ 적절히 섀정돼 μžˆλ„λ‘ ν•΄μ•Ό ν•  것이닀.

SEE ALSO

mkdtemp(3), mktemp(3), tempnam(3), tmpfile(3), tmpnam(3)


2017-09-15

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