Я изучаю экзамен по операционной системе, и теперь я вижу код для поведения системного вызова fork(). Основная цель - рисовать дерево процессов, созданных этим кодом. Я сделал это, но я не могу объяснить, потому что, когда я запускаю этот код, он печатает 6-кратные значения glob, два из которых разные, а все остальные равно. Почему это? Он не должен печатать одно значение glob (точно значение 2 переменной glob)? Спасибо всем!Некоторое объяснение поведения системного вызова fork?
это код:
int main(int argc,char* argv[]){
int glob=5;
int pid=0;
pid=fork();
glob--;
pid=fork();
glob--;
if (pid!=0) {
pid=fork();
glob--; }
printf("Value=%d\n",glob);
return 0;
}
Вы пробовали отслеживать выполнение с помощью карандаша на бумаге и отслеживать значения таким образом? – Dai
Является ли '' glob' 'просто именем мета переменной, например 'foo'? Это не очень хорошо выбрано, так как это тень [стандартная функция POSIX] (https://linux.die.net/man/3/glob), которая может сбивать с толку. Это не проблема, которую вы видите, но это сбивает с толку. – unwind