fork 함수를 사용하여 자식 프로세스를 생성하는 것은 알겠습니다.
몇가지 궁금한 것이 있어서요.
1) 자식 프로세스의 생성은 하나의 부모 에서만 가능한 것인가요?
즉 어떤 부모 프로세스에 의해 생성된 자식 프로세스 자체가 부모가 될 수는 없는 것인가요?
2) fork() 함수를 사용하여 프로세스를 생성하는 것은 왜 그런 것인가요?
1)부모프로세스에서 fork()호출하여, 자식프로세스가 생성되면, 자식프로세스로 부터 PID가 반환되게 됩니다. 그러니깐 자식프로세스는 하나의 부모에서만 가능하게 되는거죠.
그리고, 두 프로세스간의 일처리는 PID의 반환에 의해 이뤄지므로 부모프로세스는 자식프로세스의 제어를 할수 있는 역할을 담당하게 됩니다.(부모프로세스는 fork를 호출해서 완전히 독립적인 프로세스를 생성하고 그 프로세스가 일을 끝날때까지 wait()하는 역할을 하게 되는거죠.)
자식프로세스가 부모가 될수 없는것은 PID에 대한 통제 권한이 부모에게만 있으므로 자신의 PID를 제어할수 있는 (wait()함수사용) 자식프로세스는 없다고 봐도 무방할 거 같습니다.
2)fork를 사용하여 프로세스를 생성한다는 것은 한번에 하나 이상의 기능을 수행하는 프로세스를 사용하기 위해서 입니다.
일반적으로 스레드를 사용하거나, exec에서 처럼 프로그램내의 '완전히 독립적인 프로세스'를 생성하는 작업이 필요한데, fork()함수를 사용하여 위에서 말한 새로운 프로세스를 생성할 수 있는 겁니다.
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
C Standard Library (0) | 2009.05.26 |
---|---|
fork()와 exec() [펌] (0) | 2009.05.26 |
fork 는 프로세스를 복제하는 함수입니다. (0) | 2009.05.26 |
fork()이야기 1. (0) | 2009.05.25 |
execl 다른 프로그램 실행 (0) | 2009.05.23 |