fork생성에 관한질문.
글쓴이: vilinux / 작성시간: 수, 2004/02/18 - 6:27오후
fork...
void ForkCreat(void)
{
char i =0;
pid_t pid[2];
//for (i = 0; i < 2; i++) {
//pid[i] = fork();
if ((pid[0] = fork())== -1) {
perror("fork error\n");
exit(1); //fork 호출에 실패하면 1을 반환하고 종료
}
else if (pid[0] != 0){
printf("parent precess: %ld\n", getpid());
}
else if (pid[0] == 0) {
printf("child process[1] %ld\n", getpid());
}
if ((pid[1] = fork())==-1) {
perror("fork error\n");
exit(1);
}
else if (pid[1] == 0) {
printf("child process[2]: %ld\n", getpid());
}
}
}
이렇게 했는데...
부모 프로세스는 하나만 생성되나요 아니면 fork 할때마다 자식하고 같이
두개씩 생성되나요??
홀수로는 생성이 안되는지요?
한 5개정도 생성할려고 하는데......
초보라서 잘모르겠습니다...예제라도...좀...
부탁드립니다.
Forums:


Re: fork생성에 관한질문.
void ForkCreat(void) { char i =0; pid_t pid[2]; //for (i = 0; i < 2; i++) { //pid[i] = fork(); if ((pid[0] = fork())== -1) { perror("fork error\n"); exit(1); //fork 호출에 실패하면 1을 반환하고 종료 } else if (pid[0] != 0){ printf("parent precess: %ld\n", getpid()); } else if (pid[0] == 0) { printf("child process[1] %ld\n", getpid()); } if ((pid[1] = fork())==-1) { perror("fork error\n"); exit(1); } else if (pid[1] == 0) { printf("child process[2]: %ld\n", getpid()); } //} }보기가 안좋아서 =3=33
code로 묶어주면.. 들여쓰기가 유지됩니다 ;)
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
Re: fork생성에 관한질문.
부모 프로세스는 그대로 있고, 자식 프로세스가 생성됩니다.
부모 프로세스에서 fork를 다섯번하면 다섯개의 자식 프로세스가 생성되죠.
Re: fork생성에 관한질문.
이렇게 하면 될 것 같네요:
for(i=0;i<5;i++) { int pid = fork(); if(pid<0) exit(1); /* error */ else if(pid==0) break; /* child */ }댓글 달기