Проблема в том, что я хочу, чтобы наш объект был равным 93. Я хочу, чтобы переменная была разделена всеми потоками. Как статическая переменная, общая для всех объектов, я хочу, чтобы переменная была общей для всех потоков.Как использовать Mmap для обмена памятью. Пожалуйста, исправьте мой код
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
static int *glob_var;
int main(void)
{
glob_var = (int*)mmap(NULL, sizeof *glob_var, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_ANONYMOUS, -1, 0);
*glob_var = 1;
int ppid =fork();
if (ppid == 0) {
*glob_var = 92; printf("%d\n", *glob_var);
} else if(ppid!=0){
(*glob_var)++; /////I want a 93 over here???
printf("%d\n", *glob_var); /////I want a 93 over here??? print
munmap(glob_var, sizeof *glob_var);
}
return 0;
}
переменные являются общими для всех потоков. Вам не нужно ничего делать, чтобы это произошло. – xaxxon
В этом разница между потоками и процессами. Каждый процесс имеет свою собственную память, все потоки выполняются в одной и той же памяти. Просто используйте глобальные переменные или указатели прохода между потоками. – Barmar