waitpid๋ž€?


<aside> ๐Ÿ’ก waitpid() ํŠน์ • ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ

</aside>

waitpid() ํ•จ์ˆ˜๋Š” wait() ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊ฐ€์ง€ ๋Œ€๊ธฐํ•œ๋‹ค. ์ฐจ์ด์ ์€ wait() ํ•จ์ˆ˜๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ค‘ ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ์ข…๋ฃŒ๋˜๋ฉด ๋ณต๊ท€๋˜์ง€๋งŒ(๋Œ€๊ธฐ์—์„œ ํ’€๋ฆฌ์ง€๋งŒ), waitpid()๋Š” ํŠน์ • ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.

๋˜ํ•œ wait() ํ•จ์ˆ˜๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋–„๊นŒ์ง€ block ๋˜์ง€๋งŒ waitpid() ํ•จ์ˆ˜๋Š” WNOHANG ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ block ๋˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

waitpid ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ์ฃผ์–ด์ง„ pid ๋ฒˆํ˜ธ์˜ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜, ์‹œ๊ทธ๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‹ ํ˜ธ๊ฐ€ ์ „๋‹ฌ๋  ๋–„๊นŒ์ง€ waitpid ํ˜ธ์ถœํ•œ ์˜์—ญ์—์„œ ์ผ์‹œ ์ค‘์ง€ ๋„๋‹ˆ๋‹ค.

๋งŒ์ผ pid๋กœ ์ง€์ •๋œ ์ž์‹์ด waitpid ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ „์— ์ด๋ฏธ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ํ•จ์ˆœ๋А ์ฆ‰์‹œ ๋ฆฌํ„ดํ•˜๊ณ  ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๋กœ ๋‚จ๋Š”๋‹ค.

pid์˜ ๊ฐ’์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋œ๋‹ค.

์ข…๋ฃŒ๋œ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ID๋Š” ์—๋Ÿฌ์ผ ๋–„ -1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋งŒ์ผ ์–ด๋–ค ์ž์‹๋„ ์ด์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

waitpid()


pid_t waitpid(pid_t pid, int *status, int options);