fork코딩중 특정 n번째 프로세서의 pid가 저장이 되질 않습니다.

tomylove의 이미지

코드는 이렇구요

#include
#include
#include
#include
#include
pid_t spid;
int main()
{
int i;
int exit_code;
int stat;

char *message;
pid_t pid;
pid_t ppid;

for(i=0;i<10;i++)
{
if(i==0){
pid=fork();
switch(pid)
{
case -1:
perror("failed");
exit(1);
case 0:
exit_code=1;
printf("child : pid = %d, ppid = %d, exit code = %d\n\n",getpid(),getppid(),exit_code);
sleep(20);
break;
default:

exit_code = 0;
printf("parent\n");
ppid=getpid();

break;
}
}
else
{
if(ppid==getpid())
{
pid=fork();
switch(pid)
{
case -1:
perror("failed");
exit(1);
case 0:
exit_code=1;
if(i==7){
spid=getpid();
printf("7 child : %d\n%d\n",spid,ppid);
}
printf("child : pid = %d, ppid = %d, exit code = %d\n\n",getpid(),getppid(),exit_code);
sleep(20-i);
break;
default:

exit_code = 0;
printf("parent\n");

break;
}

}

}
}

if(pid!=0){
int stat;
printf("ppid %d\n",ppid);
printf("parent : waiting for child %d\n\n",spid);

waitpid(spid,&stat,0);

if(WIFEXITED(stat)){
printf("parent : retrun pid = %d\n\n",spid);
printf("normal termination!, exit status = %d\n\n",WIFEXITED(stat));
}
else
printf("abnormally\n");

}

}

spid가 7번째 프로세서의 pid입니다.

그런데 자꾸 0으로 뜹니다;;

머를 고쳐야 하는지 알켜 주시면 감사하겠습니다.