Я изучаю fork (), как я узнал, в fork () родитель и потомок имеют одинаковое «изображение», т. Е. Оба они указывают на одну и ту же таблицу страниц, на которой отмечены все ее записи в таблице страниц (когда Ядро обрабатывает системный вызов) только для чтения. при записи на страницу, например, при обновлении переменной, открывается анонимная страница и там хранятся изменения, следовательно, практически дочерний и родительский элементы не влияют на переменные друг друга. Я столкнулся со странным случаем, когда я не могу понять, что происходит. я не могу понять, что происходит, когда возвращаемое значение fork () попадает в переменную stati c и когда точно выполняется разбиение:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
static int a = 0;
static int r = 0;
int main() {
r = fork();
if (r > 0){
a = 1;
}
if (a == 0) {
fork();
}
return 0;
}
Сколько стоит fork () выполнены? первый явно происходит, будет ли второй? когда я запускаю код с некоторой печатью (и проверка форка успешна), он меняется от одного запуска к другому, хотя, как я узнал, это должно быть всегда 2 вилки . Это какая-то проблема в моем компьютере или программе, которую я использую для запуска кода, или я что-то упустил, и это изменяющееся поведение можно объяснить?