2009년 3월 12일 목요일

또 다른 fork 예

fork는 자신과 동일한 자식 프로세스를 하나더 생성하면 생성된 자식프로세스는
자신을 만든 fork문장 다음부터 수행을 시작한다는것을 아시면 될것 같네요..
참고로 A가 B를 fork 했을때 누가 자식이고, 누가 부모인지를 판단하는 기준은

int pid;
pid = fork();

위와 같이 반환값을 받아서
pid 값이 0이면 자식 프로세스를 뜻하며
pid 값이 양수의 특정한 값이면 부모프로세스이면서 부모 프로세스는 그 양수의 프로세스 아이디를 갖는 자식 프로세스를 생성하였음을 뜻합니다.
pid 값이 음수라면 fork를 실패해서 자식프로세스를 못만들었다는 뜻

참조

또 다른 fork 예:

[root@waf cstudy]# cat fork2.c
#include < stdio.h>
main()
{
int x=8109;
printf("test1:%d\n",x);
fork();
x=x+2;
printf("test2:%d\n",x);
fork();
x=x+3;
printf("test3:%d\n",x);
}
[root@waf cstudy]# ./fork2
test1:8109
test2:8111
test3:8114
test3:8114
test2:8111
test3:8114
test3:8114

==============================================================================

#include < stdio.h>
#include < iostream.h>
#include < unistd.h>
#include < sys/wait.h>

void pfork(int a);

int main(){

int index=0;

pfork(index);

return 0;
}

void pfork(int a){
if(a==10) return;
else if(fork()==0) {
printf("Child %d\n",a);
pfork(a+1);
}
else {
wait(0);
printf("Parent %d \n", a);
}
}

결과값
Child 0
Child 1
Child 2
Child 3
Child 4
Child 5
Child 6
Child 7
Child 8
Child 9
Parent 9
Parent 8
Parent 7
Parent 6
Parent 5
Parent 4
Parent 3
Parent 2
Parent 1
Parent 0

댓글 없음:

댓글 쓰기