진짜 이런건 혼자해야지 실력이 쌓인다
하고 몇일째 하는데 대가리 빠가라 그런지 이해가 안됨....
for(i=0; i<5;i++)
30 {
31 if( pid < 0)
32 {
33 fprintf(stderr, "fork failed");
34 return 1;
35 }
36 if( pid > 0)
37 {
38 pid = fork();
39
40 }
41
42
43 else if(pid==0)
44 {
45 pid_child = getpid();
46 for(j=0;j<5;j++)
47 {
48 printf("[%dprocess] #%d\n",pid_child,j);
49 }
50 return 0;
51 }
52 }
53
54
55 while(wait(NULL)!=-1 )
56 {
57 printf("%d [child] 종료. %d [부모]\n",wait(NULL),getpid());
58 }
59
60
61 return 0;
}
몇개만 물어볼게..
1. 왜 자식프로세스끼리 충돌안하는거야? 보면 01234 01234 이순서대로 프로세스번호도 순서대로나옴
하면서 그런경우도잇엇는데 어케 적엇엇는지 기억이안남..
2.왜 마지막 자식프로세스는 출력을 안하지??
이건 존나 생각해봐도 답이안나옴
3. wait(NULL) 에서 원래 종료되는 자식들 전부 못찾아내는거야?
5개중에 3개만 종료된게 출력되네 그리구 wait(NULL)이 -1인 경우가 2번이 되던데
왜그런거야.. 도와줘.. 슬프다 이딴것 제대로 못하는 내가 ㅠ.ㅜ
짤방올려야하는걸 알지만
우분투라 짤있는게 아무것도 없다 미안행..
하고 몇일째 하는데 대가리 빠가라 그런지 이해가 안됨....
for(i=0; i<5;i++)
30 {
31 if( pid < 0)
32 {
33 fprintf(stderr, "fork failed");
34 return 1;
35 }
36 if( pid > 0)
37 {
38 pid = fork();
39
40 }
41
42
43 else if(pid==0)
44 {
45 pid_child = getpid();
46 for(j=0;j<5;j++)
47 {
48 printf("[%dprocess] #%d\n",pid_child,j);
49 }
50 return 0;
51 }
52 }
53
54
55 while(wait(NULL)!=-1 )
56 {
57 printf("%d [child] 종료. %d [부모]\n",wait(NULL),getpid());
58 }
59
60
61 return 0;
}
몇개만 물어볼게..
1. 왜 자식프로세스끼리 충돌안하는거야? 보면 01234 01234 이순서대로 프로세스번호도 순서대로나옴
하면서 그런경우도잇엇는데 어케 적엇엇는지 기억이안남..
2.왜 마지막 자식프로세스는 출력을 안하지??
이건 존나 생각해봐도 답이안나옴
3. wait(NULL) 에서 원래 종료되는 자식들 전부 못찾아내는거야?
5개중에 3개만 종료된게 출력되네 그리구 wait(NULL)이 -1인 경우가 2번이 되던데
왜그런거야.. 도와줘.. 슬프다 이딴것 제대로 못하는 내가 ㅠ.ㅜ
짤방올려야하는걸 알지만
우분투라 짤있는게 아무것도 없다 미안행..
pid 선언된 위치가 이상하다. 왜 이렇게 함?
저기가 부모위치니까 부모는 자식만 만드는거라해서..
아 for문 전에 pid = getpid() 이거 하나잇음.
fork() 한 시점에서부터 조건분기를 나눠야할텐데. 아닌가
wait(NULL)이 -1이 되엇을때가 모든 자식이 종료되는게 맞나..??
pid를 검사한 후에 fork를 하는 건 무슨........
힝아// 부모가 하는일이 자식만 만드는거라고 해놔서
잘못된거야 그래드??
맨 밑 while문에 조건에서 종료된 pid를 저장해놓고 루프 안에서는 좀전에 저장한 pid를 보여줘야 하겠지. 루프 안에서 또 기다리면 안되고
http://mij.oltrelinux.com/devel/unixprg/srcs/fork/2/forkvswaitpid.c
보통 이렇게 하지 않냐? 구조가 이상하다
ㅇㅇ// 4년쉬다가 다시 공부하는데 os처음 배우는데 이해가 너무안되서..
저 루프에서 하는게 모든 자식프로세스 종료전까지 각각 종료될때 리턴값이 그 자식의 pid니까 출력하는거다 이렇게 생각햇는데 아닌거야..?
님이 지금 존나 이해가 안가시는 모양인데 나도 님 코드 봐도 왜 저런 구조가 나오는지 존나 이해가 안감
음.. 자식프로세스10개만들고 각각프로세스가 100번출력하고 종료되면 종료될때 마다 종료됐다고 출력하는건데..나도 내가 이해가안됨..