process 가 있는데 여기에는 2 개 이상의 thread 가 돌고 있읍니다. 이중 한 thread 가 fork() 를 수행하면 새로 생긴 child 는 parent 의 thread 를 모두다 갖고있는 건가요? 이 child 는 즉시 execl() 을 하고 죽게 할 생각입니다. 다른 thread 에 영향을 주는지 혹은 parent의 thread 들과 어떤관계가 있는지 궁금합니다.
자식 프로세스는 오직 fork()를 수행한 쓰레드만을 가지고 시작합니다.
가급적 쓰레드 프로그램에서는 fork를 수행하지 않는 것이 좋지만, xfmulder 님이 원하시는 것처럼, 자식 프로세스가 곧바로 exec() 계열의 함수들을 사용하는 경우는 사용해도 크게 문제되지 않습니다.
굳이 fork()를 사용해야 하는 경우는(exec()를 바로 하는 경우 제외), pthread_atfork() 함수를 사용하여 부모 프로세스와 자식 프로세스에서 적절한 동기화(뮤텍스 등) 처리를 해 주어야 합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
자식 프로세스는 오직 fork()를 수행한 쓰레드만을 가지고 시작합니다.
자식 프로세스는 오직 fork()를 수행한 쓰레드만을 가지고 시작합니다.
가급적 쓰레드 프로그램에서는 fork를 수행하지 않는 것이 좋지만,
xfmulder 님이 원하시는 것처럼, 자식 프로세스가 곧바로
exec() 계열의 함수들을 사용하는 경우는 사용해도 크게 문제되지
않습니다.
굳이 fork()를 사용해야 하는 경우는(exec()를 바로 하는 경우 제외),
pthread_atfork() 함수를 사용하여 부모 프로세스와 자식 프로세스에서
적절한 동기화(뮤텍스 등) 처리를 해 주어야 합니다.
댓글 달기