exit(3) - wariua/manpages-ko GitHub Wiki
exit - μ μμ νλ‘μΈμ€ μ’ λ£ μΌμΌν€κΈ°
#include <stdlib.h>
void exit(int status);
exit()
ν¨μλ μ μμ νλ‘μΈμ€ μ’
λ£λ₯Ό μΌμΌν€λ©° λΆλͺ¨μκ² status & 0377
κ°μ΄ λ°νλλ€. (wait(2) μ°Έκ³ .)
atexit(3) λ° on_exit(3)λ‘ λ±λ‘ν λͺ¨λ ν¨μλ€μ΄ λ±λ‘ μμμΌλ‘ νΈμΆλλ€. (κ·Έ ν¨μλ€ μ€ νλμμ atexit(3)λ on_exit(3)λ₯Ό μ¬μ©ν΄ μ’ λ£ μ€ μ€νν ν¨μλ₯Ό μΆκ°λ‘ λ±λ‘νλ κ²μ΄ κ°λ₯νλ€. μλ‘ λ±λ‘ν ν¨μλ νΈμΆμ κΈ°λ€λ¦¬λ ν¨μλ€μ λͺ©λ‘ μ λμ μΆκ°λλ€.) μ΄ ν¨μλ€ μ€ νλκ° λ°ννμ§ μμΌλ©΄ (κ°λ Ή _exit(2)λ₯Ό νΈμΆνκ±°λ μκ·Έλλ‘ μ€μ€λ‘λ₯Ό μ£½μ΄λ©΄) λ¨μ μλ ν¨μλ€μ΄ νΈμΆλμ§ μμΌλ©° μ΄ν μ’ λ£ μ μ°¨λ₯Ό (νΉν stdio(3) μ€νΈλ¦Ό νλ¬μ±μ) ν¬κΈ°νλ€. ν ν¨μλ₯Ό atexit(3)μ΄λ on_exit(3)μΌλ‘ μ¬λ¬ λ² λ±λ‘νμΌλ©΄ λ±λ‘ν νμλ§νΌ νΈμΆλλ€.
μ΄λ¦° stdio(3) μ€νΈλ¦Όλ€ λͺ¨λλ₯Ό νλ¬μ νκ³ λ«λλ€. tmpfile(3)λ‘ λ§λ νμΌλ€μ μ κ±°νλ€.
C νμ€μμ μμ EXIT_SUCCESS
λ° EXIT_FAILURE
λ₯Ό λͺ
μΈνλλ°, μ΄λ₯Ό exit()
μκ² μ λ¬νμ¬ κ°κ° μ±κ³΅ μ’
λ£λ λΉμ±κ³΅ μ’
λ£λ₯Ό λνλΌ μ μλ€.
exit()
ν¨μλ λ°ννμ§ μλλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
exit() |
μ€λ λ μμ μ± | MT-Unsafe race:exit |
exit()
ν¨μλ 보νΈκ° μ΄λ€μ§μ§ μλ μ μ λ³μλ₯Ό μ¬μ©νλ©°, λ°λΌμ μ€λ λ μμ νμ§ μλ€.
POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
atexit(3) λ° on_exit(3)μΌλ‘ λ±λ‘ν ν¨μμμ exit()
λ longjmp(3)λ₯Ό νΈμΆν κ²½μ°μ λμ λ°©μμ κ·μ λμ΄ μμ§ μλ€. μ°Έκ³ λ‘ execve(2)λ₯Ό νΈμΆνλ©΄ atexit(3) λ° on_exit(3)μΌλ‘ λ±λ‘ν λ΄μ©μ΄ μμ΄μ§λ€.
EXIT_SUCCESS
μ EXIT_FAILURE
λ₯Ό μ°λ κ²μ΄ 0κ³Ό 1 λ΄μ§ -1 κ°μ κ°μ μ°λ κ²λ³΄λ€ (λΉ μ λμ€ νκ²½μ λν΄) μ‘°κΈ λ μ΄μμ±μ΄ μλ€. νΉν VMSμμ λ€λ₯Έ κ΄νμ μ¬μ©νλ€.
BSDμμ μ’
λ£ μ½λλ₯Ό νμ€ννλ € νκ³ μλ€. (GNU C λΌμ΄λΈλ¬λ¦¬ κ°μ λͺλͺ C λΌμ΄λΈλ¬λ¦¬μμ λ°μλ€μ΄κΈ°λ νλ€.) <sysexits.h>
νμΌ μ°Έκ³ .
exit()
νμ λΆλͺ¨ νλ‘μΈμ€μκ² μ’
λ£ μνκ° μ λ¬λμ΄μΌ νλ€. μΈ κ°μ§ κ²½μ°κ° μλ€.
-
λΆλͺ¨μμ
SA_NOCLDWAIT
μ μ€μ νκ±°λSIGCHLD
νΈλ€λ¬λ₯ΌSIG_IGN
μΌλ‘ μ€μ νλ€λ©΄ μνκ° νκΈ°λκ³ μμμ΄ μ¦μ μ£½λλ€. -
λΆλͺ¨κ° μμμ κΈ°λ€λ¦¬κ³ μμλ€λ©΄ μ’ λ£ μνκ° ν΅κ³ λκ³ μμμ΄ μ¦μ μ£½λλ€.
-
κ·Έ μΈμ κ²½μ° μμμ΄ "μ’λΉ" νλ‘μΈμ€κ° λλ€. νλ‘μΈμ€ μμ λλΆλΆμ΄ μ¬νμ©λκ³ μμ νλ‘μΈμ€μ λν μ΅μνμ μ 보(μ’ λ£ μν, μμ μ¬μ© ν΅κ³)λ§ λ΄μ μ¬λ‘―μ΄ νλ‘μΈμ€ ν μ΄λΈμ μ μ§λλ€. κ·Έλ¬λ©΄ λΆλͺ¨κ° μ΄νμ waitpid(2)λ₯Ό (λλ λΉμ·ν ν¨μλ₯Ό) μ΄μ©ν΄ μμμ μ’ λ£ μνλ₯Ό μμλΌ μ μμΌλ©°, κ·Έλ μ’λΉ νλ‘μΈμ€ μ¬λ‘―μ΄ μ¬λΌμ§λ€.
ꡬνμμ SIGCHLD
μκ·Έλμ μ§μνλ©΄ λΆλͺ¨μκ² μ΄ μκ·Έλμ 보λΈλ€. λΆλͺ¨μμ SA_NOCLDWAIT
μ μ€μ ν κ²½μ° SIGCHLD
μκ·Έλμ 보λ΄λμ§ μ¬λΆλ κ·μ λμ΄ μμ§ μλ€.
μ’
λ£νλ νλ‘μΈμ€κ° μΈμ
리λμ΄κ³ κ·Έ μ μ΄ ν°λ―Έλμ΄ μΈμ
μ μ μ΄ ν°λ―ΈλμΈ κ²½μ°μλ μ΄ μ μ΄ ν°λ―Έλμ μ κ²½ νλ‘μΈμ€ κ·Έλ£Ήμ κ° νλ‘μΈμ€μκ² SIGHUP
μκ·Έλμ΄ μ μ‘λλ©° ν°λ―Έλμ΄ μ΄ μΈμ
κ³Ό λΆλ¦¬λλ€. κ·Έλμ μλ‘μ΄ μ μ΄ νλ‘μΈμ€κ° ν°λ―Έλμ νλν μ μκ² λλ€.
νλ‘μΈμ€ μ’
λ£λ‘ μΈν΄ μ΄λ€ νλ‘μΈμ€ κ·Έλ£Ήμ΄ κ³ μκ° λλ κ²½μ°μ κ·Έ μλ‘ κ³ μκ° λλ νλ‘μΈμ€ κ·Έλ£Ήμ ꡬμ±μ μ€μ μ μ§λ νλ‘μΈμ€κ° μμΌλ©΄ μ΄ νλ‘μΈμ€ κ·Έλ£Ήμ κ° νλ‘μΈμ€μκ² SIGCONT
μκ·Έλκ³Ό SIGHUP
μκ·Έλμ΄ μ°λ¬μ κ°κ² λλ€. κ³ μ νλ‘μΈμ€ κ·Έλ£Ήμ λν μ€λͺ
μ setpgid(2)λ₯Ό 보λΌ.
μ κ²½μ°λ€μμλ μκ·Έλμ λ°λ νλ‘μΈμ€κ° μ’
λ£ νλ‘μΈμ€μ μμμΌ μλ μλ€. νμ§λ§ μ΄λ₯Ό μ μΈνλ©΄ μΌλ°μ μΌλ‘ νλ‘μΈμ€ μ’
λ£λ‘ μΈν΄ κ·Έ νλ‘μΈμ€μ μμμκ² μκ·Έλμ΄ μ μ‘λμ§ μλλ€. νμ§λ§ νλ‘μΈμ€μμ prctl(2) PR_SET_PDEATHSIG
λμμ μ¬μ©ν΄ μκΈ° λΆλͺ¨κ° μ’
λ£νλ κ²½μ° μκ·Έλμ λ°λλ‘ λ°κΏ μ μλ€.
_exit(2), get_robust_list(2), getpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3)
2019-03-06