fork코딩중 특정 n번째 프로세서의 pid가 저장이 되질 않습니다.
코드는 이렇구요
#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으로 뜹니다;;
머를 고쳐야 하는지 알켜 주시면 감사하겠습니다.
댓글 달기