Мне нужно создать определенное количество параллельных дочерних процессов. Я также хочу, чтобы каждый дочерний процесс изменял глобальную переменную, чтобы основной родительский процесс мог печатать ее в последней измененной версии. Когда я запускаю программу ниже, конечное значение для 'k' будет 5, поэтому глобальная переменная не меняется. Если я уберу часть «exit (0)», глобальная переменная изменится, но на этот раз число созданных дочерних процессов станет больше.
Используя 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;
}