Если процесс и его вилка имеют разные копии данных, то почему их указатель одинаковый?Форки и общая память
В приведенном ниже примере, если счет был разделен между родительским и дочерним процессами, мы увидели бы count: 2
. Однако счет не используется. Но тогда почему &count
возвращает одно и то же значение как в родительском, так и в дочернем процессах?
Выход:
count: 1 0x7fff5a617510
count: 1 0x7fff5a617510
Программа:
#include <stdio.h>
#include <pthread.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
pid_t pid;
int count = 0;
pid = fork();
count++;
printf("count: %d %p \n", count, &count);
return 0;
}
Это виртуальная адресация. Адрес, который видит ваш процесс, напрямую не соответствует физическим адресам. –
Есть ли способ увидеть физический адрес? – luqmaan
Хм. Вывод для меня: 'error: 'new_count' undeclared (сначала использовать в этой функции)'. :) – pilcrow