fork 함수 반복할 때 exit
글쓴이: -@Naver / 작성시간: 금, 2019/04/19 - 4:40오후
#include <stdio.h> #include <stdlib.h> void main(){ int x, i; for(i=0;i<5;i++){ x=fork(); if (x==0){ // child int k; for(k=0;k<10;k++){ printf("%d-th child running %d-th iteration “, i, k); fflush(stdout); // to make printf work immediately sleep(1); // sleep 1 second } exit(0); // child exits after 10 iterations } } // now parent printf(“parent exits\n”); } printf에서 i와 k 값을 출력할 때 왜 i 값이 일정하지 않게 나오나요??
Forums:
(1) 어떤 결과를 예상했으며 (2) 어떤 결과가
(1) 어떤 결과를 예상했으며 (2) 어떤 결과가 나와서 이상하다는 건지 올려주세요
i 값이 계속 일정하게 나올줄 알았는데 프로그램을
i 값이 계속 일정하게 나올줄 알았는데 프로그램을 실행할때마다 랜덤하게 나오는 이유를 알고 싶습니다.
"일정하다", "랜덤하다"가 무슨 의미인지 실행
"일정하다", "랜덤하다"가 무슨 의미인지 실행 결과를 예로 들어 설명해보세요.
설마 i가 0부터 4까지 오름차순으로 나타나길 바라시는 건가요?
네 맞습니다..! i 가 0,1,2,3,4 순서가
네 맞습니다..! i 가 0,1,2,3,4 순서가 아닌 4,3,2,0,1 이런식으로 프로그램을 실행때마다 뒤죽박죽 바뀌어 출력되는 이유를 알고싶습니다.
거꾸로 여쭙습니다만, 왜 i=0 to 4까지 순서대로
거꾸로 여쭙습니다만, 왜 i=0 to 4까지 순서대로 나타날 것으로 생각하셨는지요?
그 순서대로 시작했기 때문에? 만약 그렇다면 아래 레퍼런스를 참고 바랍니다:
https://m.post.naver.com/viewer/postView.nhn?volumeNo=7335164&memberNo=16172891
sleep(1);을 첫번째 for문 밖으로 옮겨
sleep(1);을 첫번째 for문 밖으로 옮겨 보세요
fork()가 다섯번 연속적으로 순식간에 일어나다보니
fork()가 다섯번 연속적으로 순식간에 일어나다보니
자식프로세스들이 동시다발로 복제되다시피 해서 그렇죠.
fork() 앞이나 뒤에
usleep(1000);
정도로만 시차를 줘도i값이 순차적으로 나올 겁니다.
댓글 달기