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

NAME

exit - 정상적 ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œ μΌμœΌν‚€κΈ°

SYNOPSIS

#include <stdlib.h>

void exit(int status);

DESCRIPTION

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()μ—κ²Œ μ „λ‹¬ν•˜μ—¬ 각각 성곡 μ’…λ£Œλ‚˜ 비성곡 μ’…λ£Œλ₯Ό λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

RETURN VALUE

exit() ν•¨μˆ˜λŠ” λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.

ATTRIBUTES

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

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
exit() μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Unsafe race:exit

exit() ν•¨μˆ˜λŠ” λ³΄ν˜Έκ°€ 이뀄지지 μ•ŠλŠ” μ „μ—­ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©°, λ”°λΌμ„œ μŠ€λ ˆλ“œ μ•ˆμ „ν•˜μ§€ μ•Šλ‹€.

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

NOTES

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 λ™μž‘μ„ μ‚¬μš©ν•΄ 자기 λΆ€λͺ¨κ°€ μ’…λ£Œν•˜λŠ” 경우 μ‹œκ·Έλ„μ„ 받도둝 λ°”κΏ€ 수 μžˆλ‹€.

SEE ALSO

_exit(2), get_robust_list(2), getpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3)


2019-03-06

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