유닉스는 모든 프로세스가 꼭 부모 자식 관계를 유지는데..
꼭 그래야만 하는 이유가 있는건가요?
네...
UNIX에는 일반적으로 기본 process가 3개 있는데...
0, 1, 2번 프로세스입니다.
여기에 대한 자세한 내용은 역시 Stevens의 APUE 참고 하시고...
근데... 이중 1번이 모든 프로세스의 대모가 됩니다.
이놈에서 부터 모든 프로세스는 시작이 되죠...
그러니 UNIX에서 돌아가는 모든 프로그램은 이 1번 process로부터 forking되서 나온것들 입니다.
그리고 프로그래밍 중에 아마도 현재의 parent process ID(PPID)를 알 필요가 있습니다(여기엔 상황에따라 여러 경우가 있겠죠).
한 예로 지금 돌고 있는 부모 프로세스를 죽이게 되면은 자식들도 모두 종료되는데...
이건 자식들 일일이 종료 하는것들도다 편하겠죠...
아님... 중간 처리를 해서 부모프로세스를 1번으로 다시 가지게 하거나...
보통 이러한 경우는 daemon에서 사용하죠...
하하 wrote:
윈도우 같은 경우 모든 프로세스(?)는 부모 자식 관계를 유지하나요?
원래 윈도그에는 프로세스가 없습니다.
모두 쓰레드로 돌아 갑니다.
아무리 쓰레드로 돌리더라도 이런 관계는 아마 있을겁니다.
개념상 비슷한....
하하 wrote:
제가 알기론 윈도우는 fork 같은 기능은 없는 걸로 알고 있습니다..
위의 대답으로 답이 된듯...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
Re: PID, PPID 관계가 필요한 이유?
아뇨, 최초 저작자의 의도였고, 현재는 관습일 뿐입니다.
아뇨, 윈도우 제작자는 별로 부모자식이런거 신경안쓴거 같습니다. 관심이 없었는지......
fork()의 기능을 무엇으로 보냐가 문제인데, 유닉스에서 프로세스를 생성하는 유일한 시스템 호출을 fork()라고 한다면, 윈도우에서도 프로세스를 생성하는 시스템 호출은 당연히 있어야 겠지요?
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
Re: PID, PPID 관계가 필요한 이유?
네...
UNIX에는 일반적으로 기본 process가 3개 있는데...
0, 1, 2번 프로세스입니다.
여기에 대한 자세한 내용은 역시 Stevens의 APUE 참고 하시고...
근데... 이중 1번이 모든 프로세스의 대모가 됩니다.
이놈에서 부터 모든 프로세스는 시작이 되죠...
그러니 UNIX에서 돌아가는 모든 프로그램은 이 1번 process로부터 forking되서 나온것들 입니다.
그리고 프로그래밍 중에 아마도 현재의 parent process ID(PPID)를 알 필요가 있습니다(여기엔 상황에따라 여러 경우가 있겠죠).
한 예로 지금 돌고 있는 부모 프로세스를 죽이게 되면은 자식들도 모두 종료되는데...
이건 자식들 일일이 종료 하는것들도다 편하겠죠...
아님... 중간 처리를 해서 부모프로세스를 1번으로 다시 가지게 하거나...
보통 이러한 경우는 daemon에서 사용하죠...
원래 윈도그에는 프로세스가 없습니다.
모두 쓰레드로 돌아 갑니다.
아무리 쓰레드로 돌리더라도 이런 관계는 아마 있을겁니다.
개념상 비슷한....
위의 대답으로 답이 된듯...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
댓글 달기