strerror(3) - wariua/manpages-ko GitHub Wiki
strerror, strerror_r, strerror_l - μ€λ₯ λ²νΈλ₯Ό μ€λͺ νλ λ¬Έμμ΄ λ°ν
#include <string.h>
char *strerror(int errnum);
int strerror_r(int errnum, char *buf, size_t buflen);
/* XSI μ€μ */
char *strerror_r(int errnum, char *buf, size_t buflen);
/* GNU μ μ© */
char *strerror_l(int errnum, locale_t locale);
glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
strerror_r()
: -
λ€μ κ²½μ°μ XSI μ€μ λ²μ μ 곡:
(_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE
μλλ©΄ GNU μ μ© λ²μ μ 곡.
strerror()
ν¨μλ errnum
μΈμλ‘ μ€ μ€λ₯ μ½λλ₯Ό μ€λͺ
νλ λ¬Έμμ΄ ν¬μΈν°λ₯Ό λ°ννλ©°, νμ¬ λ‘μΊμ LC_MESSAGES
μμλ‘ μ μ ν μΈμ΄λ₯Ό μ νν μλ μλ€. (μλ₯Ό λ€μ΄ errnum
κ° EINVAL
μ΄λ©΄ λ°νλλ μ€λͺ
μ΄ "Invalid argument"μ΄λ€.) μμ©μμ κ·Έ λ¬Έμμ΄μ λ³κ²½ν΄μ μ λλ©°, νμ strerror()
λ΄μ§ strerror_l()
νΈμΆμμ κ·Έ λ¬Έμμ΄μ λ³κ²½ν μ μλ€. perror(3)λ₯Ό ν¬ν¨ν λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬ ν¨μλ€μ μ΄ λ¬Έμμ΄μ λ³κ²½νμ§ μλλ€.
strerror_r()
ν¨μλ strerror()
μ λΉμ·νλ μ€λ λμ μμ νλ€. μ΄ ν¨μλ λ κ°μ§ λ²μ μ΄ μλ€. POSIX.1-2001μ λͺ
μΈλ XSI μ€μ λ²μ (glibc 2.3.4λΆν° μ¬μ© κ°λ₯νμ§λ§ glibc 2.13κΉμ§λ XSI μ€μ μλ)κ³Ό GNU μ μ© λ²μ (glibc 2.0λΆν° μ¬μ© κ°λ₯)μ΄λ€. SYNOPSISμ μλ κΈ°λ₯ νμΈ λ§€ν¬λ‘ ꡬμ±μΌλ‘λ XSI μ€μ λ²μ μ΄ μ 곡λκ³ , μλλ©΄ GNU μ μ© λ²μ μ΄ μ 곡λλ€. λͺ
μμ μΌλ‘ μ΄λ€ κΈ°λ₯ νμΈ λ§€ν¬λ‘λ μ μνμ§ μμΌλ©΄ (glibc 2.4λΆν°) κΈ°λ³Έμ μΌλ‘ _POSIX_C_SOURCE
κ° 200112L κ°μΌλ‘ μ μλκ³ , κ·Έλμ strerror_r()
μ XSI μ€μ λ²μ μ΄ κΈ°λ³Έμ μΌλ‘ μ 곡λλ€.
μ΄μ κ°λ₯ν μμ©μμλ XSI μ€μ strerror_r()
κ° λ°λμ§νλ€. μ¬μ©μκ° μ 곡νλ buflen
κΈΈμ΄μ λ²νΌ buf
λ‘ μ€λ₯ λ¬Έμμ΄μ λ°ννλ€.
GNU μ μ© strerror_r()
μ μ€λ₯ λ©μμ§λ₯Ό λ΄μ λ¬Έμμ΄μ λν ν¬μΈν°λ₯Ό λ°ννλ€. ν¨μμμ buf
μ μ μ₯ν λ¬Έμμ΄μ λν ν¬μΈν°μΌ μλ μκ³ (buf
λ₯Ό μ°μ§ μλ κ²½μ°μλ) μ΄λ€ (λΆλ³) μ μ λ¬Έμμ΄μ λν ν¬μΈν°μΌ μλ μλ€. ν¨μμμ buf
μ λ¬Έμμ΄μ μ μ₯νλ κ²½μ°μλ μ΅λ buflen
λ°μ΄νΈκ° μ μ₯λλ€. (buflen
μ΄ λ무 μκ³ errnum
κ° μ μ μλ κ°μ΄λ©΄ λ¬Έμμ΄μ΄ μλ € μμ μ μλ€.) κ·Έ λ¬Έμμ΄μλ νμ μ’
λ£μ© λ λ°μ΄νΈ('\0')κ° λ€μ΄κ°λ€.
strerror_l()
μ strerror()
μ λΉμ·νλ errnum
μ locale
μ μ§μ ν λ‘μΊμ λ‘μΊ μμ‘΄μ μ€λ₯ λ©μμ§λ‘ μ°κ²°νλ€. locale
μ΄ νΉμ λ‘μΊ κ°μ²΄ LC_GLOBAL_LOCALE
μ΄κ±°λ μ ν¨ν λ‘μΊ κ°μ²΄ νΈλ€μ΄ μλ κ²½μ° strerror_l()
μ λμ λ°©μμ κ·μ λΌ μμ§ μλ€.
strerror()
, strerror_l()
, GNU μ μ© strerror_r()
ν¨μλ μ μ ν μ€λ₯ μ€λͺ
λ¬Έμμ΄μ λ°ννλ€. μ μ μλ μ€λ₯ λ²νΈλ©΄ "Unknown error nnn" λ©μμ§λ₯Ό λ°ννλ€.
XSI μ€μ strerror_r()
ν¨μλ μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ (μμ) μ€λ₯ λ²νΈλ₯Ό λ°ννκ±°λ (glibc 2.13λΆν°), -1μ λ°ννκ³ μ€λ₯λ₯Ό λνλ΄λλ‘ errno
λ₯Ό μ€μ νλ€ (glibc λ²μ 2.13 μ ).
POSIX.1-2001κ³Ό POSIX.1-2008μμλ strerror()
λ strerror_l()
νΈμΆ μ±κ³΅ μ errno
λ₯Ό λ°κΎΈμ§ μμμΌ νλ€κ³ μꡬνκ³ μμΌλ©°, μ€λ₯λ₯Ό λνλ΄κΈ° μν ν¨μ λ°ν κ°μ΄ μκΈ° λλ¬Έμ μμ©μμ νΈμΆ μ μ errno
λ₯Ό 0μΌλ‘ μ€μ νκ³ νΈμΆ νμ errno
λ₯Ό νμΈν΄μΌ νλ€κ³ μΈκΈνλ€.
EINVAL
-
errnum
κ°μ΄ μ ν¨ν μ€λ₯ λ²νΈκ° μλλ€. ERANGE
- μ 곡 μ μ₯ 곡κ°μ΄ μ€λ₯ μ€λͺ λ¬Έμμ΄μ λ΄κΈ°μ μΆ©λΆνμ§ μλ€.
glibc 2.6μμ strerror_l()
ν¨μκ° μ²μ λ±μ₯νλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
strerror() |
μ€λ λ μμ μ± | MT-Unsafe race:strerror |
strerror_r() ,strerror_l()
|
μ€λ λ μμ μ± | MT-Safe |
strerror()
λ POSIX.1-2001, POSIX.1-2008, C89, C99μ λͺ
μΈλΌ μλ€. strerror_r()
μ POSIX.1-2001, POSIX.1-2008μ λͺ
μΈλΌ μλ€.
strerror_l()
μ POSIX.1-2008μ λͺ
μΈλΌ μλ€.
GNU μ μ© strerror_r()
ν¨μλ λΉνμ€ νμ₯μ΄λ€.
POSIX.1-2001μμλ strerror()
νΈμΆμμ μ€λ₯λ₯Ό λ§λ κ²½μ° errno
λ₯Ό μ€μ νλ 건 νμ©νμ§λ§ μ€λ₯ μμ ν¨μ κ²°κ³Όλ‘ μ΄λ€ κ°μ λ°νν΄μΌ νλμ§λ λͺ
μνμ§ μκ³ μλ€. μ΄λ€ μμ€ν
μμλ μ μ μλ μ€λ₯ λ²νΈμΈ κ²½μ° NULLμ λ°ννλ€. λ€λ₯Έ μμ€ν
μμλ μ μ μλ μ€λ₯ λ²νΈμΈ κ²½μ° strerror()
κ° "Error nnn occurred" λΉμ·ν λ¬Έμμ΄μ λ°ννκ³ errno
λ₯Ό EINVAL
λ‘ μ€μ νλ€. C99μ POSIX.1-2008μμλ λ°ν κ°μ΄ NULLμ΄ μλμ΄μΌ νλ€κ³ μꡬνλ€.
GNU C λΌμ΄λΈλ¬λ¦¬μμλ strerror()
μ 1024κ° λ¬Έμλ‘ λ λ²νΌλ₯Ό μ΄λ€. μ΄ ν¬κΈ°λ©΄ strerror_r()
νΈμΆ μ ERANGE
μ€λ₯λ₯Ό νΌνκΈ°μ μΆ©λΆν κ²μ΄λ€.
err(3), errno(3), error(3), perror(3), strsignal(3), locale(7)
2019-03-06