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

NAME

pthread_atfork - ๋ถ„๊ธฐ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋กํ•˜๊ธฐ

SYNOPSIS

#include <pthread.h>

int pthread_atfork(void (*prepare)(void), void (*parent)(void),
                   void (*child)(void));

-pthread๋กœ ๋งํฌ.

DESCRIPTION

pthread_atfork() ํ•จ์ˆ˜๋Š” ์ด ์Šค๋ ˆ๋“œ์—์„œ fork(2)๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‹คํ–‰๋  ๋ถ„๊ธฐ ํ•ธ๋“ค๋Ÿฌ๋“ค์„ ๋“ฑ๋กํ•œ๋‹ค. fork(2)๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์Šค๋ ˆ๋“œ์˜ ๋ฌธ๋งฅ์—์„œ ํ•ธ๋“ค๋Ÿฌ๋“ค์ด ์‹คํ–‰๋œ๋‹ค.

์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.

  • prepare๋Š” fork(2) ์ฒ˜๋ฆฌ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • parent๋Š” fork(2) ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ํ›„ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • child๋Š” fork(2) ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ํ›„ ์ž์‹ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

ํ•ด๋‹น fork(2) ์ฒ˜๋ฆฌ ๋‹จ๊ณ„์— ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ•„์š”์น˜ ์•Š์œผ๋ฉด ์„ธ ์ธ์ž ์ค‘ ์–ด๋А ๊ฒƒ์ด๋“  NULL์ผ ์ˆ˜ ์žˆ๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ pthread_atfork()๋Š” 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ ์˜ค๋ฅ˜ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ pthread_atfork()๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ ๋‹จ๊ณ„์— ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋“ฑ๋กํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„์˜ ํ•ธ๋“ค๋Ÿฌ๋“ค์€ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋˜๋Š”๋ฐ, prepare ํ•ธ๋“ค๋Ÿฌ๋Š” ๋“ฑ๋ก ์—ญ์ˆœ์œผ๋กœ ํ˜ธ์ถœ๋˜๊ณ  parent ๋ฐ child ํ•ธ๋“ค๋Ÿฌ๋Š” ๋“ฑ๋กํ•œ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋œ๋‹ค.

ERRORS

ENOMEM
ํ•ธ๋“ค๋Ÿฌ ํ•ญ๋ชฉ์„ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค.

CONFORMING TO

POSIX.1-2001, POSIX.1-2008.

NOTES

๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ fork(2)๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ๋งŒ ์ž์‹ ํ”„๋กœ์„ธ์Šค์— ๋ณต์ œ๋œ๋‹ค. pthread_atfork()์˜ ์›๋ž˜ ์˜๋„๋Š” ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ๊ฐ€ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž์‹์œผ๋กœ ๋ณต์ œ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ณด์ด๋Š” ์–ด๋–ค ๋ฎคํ…์Šค๋ฅผ fork(2) ํ˜ธ์ถœ ์‹œ์ ์— ์–ด๋–ค ์Šค๋ ˆ๋“œ๊ฐ€ ์ž ๊ทผ ์ƒํƒœ์ผ ์ˆ˜ ์žˆ๋‹ค. ์ž ๊ทผ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹์œผ๋กœ ๋ณต์ œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทธ ๋ฎคํ…์Šค๋Š” ์ ˆ๋Œ€ ํ’€๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. pthread_atfork()์˜ ์˜๋„๋Š” ์‘์šฉ(๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์—์„œ ๋ฎคํ…์Šค ๋ฐ ๊ธฐํƒ€ ํ”„๋กœ์„ธ์Šค ๋ฐ ์Šค๋ ˆ๋“œ ์ƒํƒœ๋ฅผ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋ณต์›์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์‹ค์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ ์ž‘์—…์ด ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค.

๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ fork(2)๊ฐ€ ์ž์‹์—์„œ ๋ฐ˜ํ™˜ํ•œ ํ›„์— execve(2)๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ƒˆ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํ•  ๋•Œ๊นŒ์ง€ ์ž์‹์—์„œ๋Š” ๋น„๋™๊ธฐ ์‹œ๊ทธ๋„ ์•ˆ์ „ ํ•จ์ˆ˜(signal-safety(7) ์ฐธ๊ณ )๋งŒ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.

POSIX.1์—์„œ๋Š” pthread_atfork()๊ฐ€ EINTR ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ช…์„ธํ•œ๋‹ค.

SEE ALSO

fork(2), atexit(3), pthreads(7)


2017-09-15

โš ๏ธ **GitHub.com Fallback** โš ๏ธ