#include <stdio.h>
int x,i;
void main() {
for(i=1;i<6;i++) {
x=fork();
if(x!=0) {
printf("korea%d\n",x);
for(;;);
}
else {
printf("Japan%d ",i);
fflush(stdout);
sleep(1);
}
}
}
실행결과는 이렇습니다
Japan1 korea13390
Japan2 korea13391
Japan3 korea13392
Japan4 korea13393
Japan5 korea13394
x=fork(); 를 하면
fork()는 child에 0을 리턴하니까
if문에 걸리지않고
else에걸려서 Japan이 출력되는것....아닌가요?;
그게 맨위의 for문을 계속 돌아도 계속 그래야하는것 아닌가요?
왜 Korea가 출력되는건가요ㅠ
그리고.. printf("korea%d\n",x); 의 x가 출력하는 값은 무엇을 의미하나요?
에..또.. fflush(stdout);을 빼면...
Japan1 Japan2 Japan3 Japan4 Japan5 korea13378
Japan1 Japan2 korea13380
Japan1 Japan2 Japan3 korea13381
Japan1 korea13379
Japan1 Japan2 Japan3 Japan4 korea13382
이렇게 출력되는데요..
fflush(stdout);가 버퍼에 있는걸 비워주는거라고 알고는 있는데..
왜 저렇게 나오는지 모르겠네요...
알려주시면 감사하겠습니다^^;;
아... 그리고 시스템프로그래밍..과목 듣는건데...
영어강의고... 처음이고 해서 ㅠ
지금까지 한게...
vi,gcc,file I/O, mycat해서 명령어 만든거랑(command line argument), fork(), exec()등(system calls)
인데요...
공부하기 좋은 책 추천 좀 부탁드릴께요;ㅁ;
첫번째 루프에서 1이 2를 만들고
두번쨰 루프에서 1이 3을만들고 2가 4를 만들고
세번째 루프에서 1이 5를만들고 3이 6을만들고 2가 7을 만들고 4가 8을만들고 ..
이런식으로 생성을하는대
부모일경우 무한루프를 돌면서 멈춰있으니 다음 진행이 안되서 4
첫번째 루프에서1이 2를 만들고 멈추고
두번째 루프에서 2가 4를 만들고 멈추고
세번쨰 루프에서 4가 8을 만들고 있어서 저런 결과가 나오는게 아닐까합니다.
부모 프로세서일때 무한루프 부분을 진행시키면 아마 2의6승개의 프로세스가 생성될꺼라고 생각합니다.