mkstemp(3) - wariua/manpages-ko GitHub Wiki
mkstemp, mkostemp, mkstemps, mkostemps - μ μΌν μμ νμΌ λ§λ€κΈ°
#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
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()
μ κ΄κ³μ κ°λ€.
μ±κ³΅ μ μ΄ ν¨μλ€μ μμ νμΌμ νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EEXIST
- μ μΌν μμ νμΌλͺ
μ λ§λ€ μ μλ€. μ΄λ
template
μ λ΄μ©μ κ·μ λΌ μμ§ μλ€. EINVAL
-
mkstemp()
λ°mkostemp()
:template
μ λ§μ§λ§ μ¬μ― κΈμκ° XXXXXXκ° μλλ€. μ΄λtemplate
μ λ°λμ§ μλλ€.mkstemps()
λ°mkostemps()
:template
μ κΈΈμ΄κ°(6 + suffixlen)
κΈμλ³΄λ€ μκ±°λtemplate
μ μ λ―ΈλΆ μ λ§μ§λ§ 6 κΈμκ° XXXXXXκ° μλλ€.
μ΄ ν¨μλ€μ΄ open(2)μμ κΈ°μ νλ μ€λ₯λ€ λλ¬Έμ μ€ν¨ν μλ μλ€.
glibc 2.7λΆν° mkostemp()
κ° μ¬μ© κ°λ₯νλ€. glibc 2.11λΆν° mkstemps()
μ mkostemps()
κ° μ¬μ© κ°λ₯νλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
mkstemp() , mkostemp() ,mkstemps() , mkostemps()
|
μ€λ λ μμ μ± | MT-Safe |
mkstemp()
: 4.3BSD, POSIX.1-2001.
mkstemps()
: νμ€ν μ λ¨. νμ§λ§ λ€λ₯Έ μ¬λ¬ μμ€ν
μ μμ.
mkostemp()
λ° mkostemps()
: glibc νμ₯μ.
glibc λ²μ 2.06 λ° μ΄μ μμλ 0666 κΆν, μ¦ λͺ¨λ μ¬μ©μ μ½κΈ° λ° μ°κΈ°λ‘ νμΌμ μμ±νλ€. μ΄ κ΅¬μ λμ λ°©μμ΄ λ³΄μ μν μμμΌ μλ μλ€. λ€λ₯Έ μ λμ€ κ³μ΄μμλ 0600μ μ¬μ©νλλ° νλ‘κ·Έλ¨μ ν¬ν ν λ μ΄ μΈλΆ μ¬νμ κ°κ³Όν μλ μκΈ° λλ¬Έμ΄λ€. 0600 λͺ¨λλ‘ νμΌμ μμ±ν΄μΌ νλ€λ μꡬ μ¬νμ΄ POSIX.1-2008μ μΆκ°λλ€.
λ μΌλ°μ μΌλ‘ mkstemp()
μ POSIX λͺ
μΈμμλ νμΌ λͺ¨λμ λν΄ μ무κ²λ μΈκΈνμ§ μμΌλ―λ‘ μμ©μμ mkstemp()
λ₯Ό (λλ mkostemp()
λ₯Ό) νΈμΆνκΈ° μ μ νμΌ λͺ¨λ μμ± λ§μ€ν¬(umask(2) μ°Έκ³ )κ° μ μ ν μ€μ λΌ μλλ‘ ν΄μΌ ν κ²μ΄λ€.
mkdtemp(3), mktemp(3), tempnam(3), tmpfile(3), tmpnam(3)
2017-09-15