_exit(2) - wariua/manpages-ko GitHub Wiki
_exit, _Exit - ํธ์ถ ํ๋ก์ธ์ค ์ข ๋ฃ์ํค๊ธฐ
#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void _Exit(int status);
glibc ๊ธฐ๋ฅ ํ์ธ ๋งคํฌ๋ก ์๊ฑด (feature_test_macros(7) ์ฐธ๊ณ ):
-
_Exit()
: _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
_exit()
ํจ์๋ ํธ์ถ ํ๋ก์ธ์ค๋ฅผ "์ฆ์" ์ข
๋ฃ์ํจ๋ค. ๊ทธ ํ๋ก์ธ์ค์๊ฒ ์ํ ์ด๋ฆฐ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ค์ด ์์ผ๋ฉด ๋ชจ๋ ๋ซ๋๋ค. ๊ทธ ํ๋ก์ธ์ค์ ์์๋ค์ด ์์ผ๋ฉด init(1)
์๊ฒ (๋๋ prctl(2) PR_SET_CHILD_SUBREAPER
๋์์ ํตํด ์ง์ ํ ๊ฐ์ฅ ๊ฐ๊น์ด "์๋ธ๋ฆฌํผ" ํ๋ก์ธ์ค์๊ฒ) ๋ฌผ๋ ค์ค๋ค. ๊ทธ ํ๋ก์ธ์ค์ ๋ถ๋ชจ์๊ฒ SIGCHLD
์๊ทธ๋์ ๋ณด๋ธ๋ค.
๋ถ๋ชจ ํ๋ก์ธ์ค์๊ฒ ํ๋ก์ธ์ค ์ข
๋ฃ ์ํ๋ก status & 0377
๊ฐ์ ๋ฐํํ๋ฉฐ, wait(2) ๊ณ์ด ํจ์๋ค ์ค ํ๋๋ฅผ ์ด์ฉํด ๊ทธ ๊ฐ์ ์์งํ ์ ์๋ค.
_Exit()
ํจ์๋ _exit()
์ ๋๋ฑํ๋ค.
์ด ํจ์๋ค์ ๋ฐํํ์ง ์๋๋ค.
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. _Exit()
ํจ์๋ C99์์ ๋์
๋์๋ค.
์ข ๋ฃ์ ํจ๊ณผ, ์ข ๋ฃ ์ํ์ ์ ๋ฌ, ์ข๋น ํ๋ก์ธ์ค, ์ ์ก ์๊ทธ๋ ๋ฑ์ ๋ํ ๋ ผ์๋ exit(3)์ ๋ณด๋ผ.
_exit()
ํจ์๋ exit(3)๊ณผ ๋น์ทํ๋ atexit(3)์ด๋ on_exit(3)์ผ๋ก ๋ฑ๋กํด ๋ ํจ์๋ค์ ํธ์ถํ์ง ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฆฐ stdio(3) ์คํธ๋ฆผ๋ค์ ํ๋ฌ์ ํ์ง ์๋๋ค. ํํธ์ผ๋ก _exit()
๋ ์ด๋ฆฐ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ค์ ํ์คํ ๋ซ๋๋ค. ์ด๋ก ์ธํด ๋ฏธ์ฒ๋ฆฌ ์ถ๋ ฅ์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ์ ์ ์๋ ์ง์ฐ์ด ์๊ธธ ์๋ ์๋ค. ๊ทธ๋ฐ ์ง์ฐ์ ์์น ์๋๋ค๋ฉด _exit()
ํธ์ถ ์ ์ tcflush(3) ๊ฐ์ ํจ์๋ฅผ ํธ์ถํด ๋ณผ ์๋ ์๋ค. _exit()
์์ ๋ฏธ์ฒ๋ฆฌ I/O๋ฅผ ์ทจ์ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋ฏธ์ฒ๋ฆฌ I/O๋ฅผ ์ทจ์ํ ์ ์๋์ง๋ ๊ตฌํ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.
glibc ๋ฒ์ 2.3 ์ ๊น์ง๋ _exit()
๋ํผ ํจ์๊ฐ ๊ฐ์ ์ด๋ฆ์ ์ปค๋ ์์คํ
ํธ์ถ์ ๋ถ๋ ๋ค. glibc 2.3๋ถํฐ๋ ํ๋ก์ธ์ค ๋ด์ ๋ชจ๋ ์ค๋ ๋๋ค์ ์ข
๋ฃ์ํค๋๋ก ๋ํผ ํจ์๊ฐ exit_group(2)์ ๋ถ๋ฅธ๋ค.
execve(2), exit_group(2), fork(2), kill(2), wait(2), wait4(2), waitpid(2), atexit(3), exit(3), on_exit(3), termios(3)
2017-05-03