특정 개수의 동시 하위 프로세스를 만들어야합니다. 또한 각 하위 프로세스가 전역 변수를 수정하여 주 상위 프로세스가 마지막 수정 된 버전에서이를 인쇄 할 수있게하려고합니다. 아래 프로그램을 실행하면 'k'의 최종 값은 5가되므로 전역 변수가 변경되지 않습니다. "exit (0)"부분을 제거하면 전역 변수가 변경되지만 이번에는 생성 된 하위 프로세스의 수가 더 커집니다.fork()를 사용하여 특정 수의 자식 프로세스를 만드는 방법
fork()를 사용하면 주 상위 프로세스에서 데이터 (전역 변수, 지역 변수 등)를 수정할 수있는 X 프로세스의 하위 프로세스를 어떻게 만들 수 있습니까?
int k = 5; // global variable
int main(){
int i=0;
int status;
for(i = 0; i<5; i++){
if(fork() == 0){
printf("child %d %d\n", i, ++k);
sleep(5);
printf("done %d\n",i);
exit(0);
}
}
return 0;
}
당신은 자신의 질문에 대답했습니다. for-loop를 사용하십시오. –
그래,하지만 k는 10 대신 5가 될거야. 그게 문제 야. – user246392
"자식 프로세스가 전역 변수를 수정하는 방법"이 아닌 'fork'가 작동하는 것 같아요. '스레드'라고 생각 하시겠습니까? – Kevin