Здравствуйте. Подскажите пожалуйста. Есть mmap, которая размещает файл в памяти, ускоряя доступ к нему. Необходимо организовать передачу между двумя процессами.
Пытаюсь сделать так:
char *f;//область памяти куда поместим файл
int com_size;//размер
struct stat s;//структура для получения информации о файле
pid_t proc;
proc=fork();
switch(proc)
{
case 0://дочерний процесс
//ждем пока файл разместится в памяти
sleep(2);
fprintf(stderr, "get memory\n" );
for (int i = 0; i < com_size; i++)
{
char c;
c = f[i];
putchar(c);
}
break;
default://родительский процесс
//размещаем файл в памяти
int fd;
fd = open ("111", O_RDONLY);
/* Get the size of the file. */
int status;
status = fstat (fd, & s);
com_size = s.st_size;
f = (char *) mmap (0, com_size, PROT_READ, MAP_SHARED, fd, 0);//размещаем файл
}
получается, что адрес памяти доступен родителю, но потомку недоступен. Не совсем понимаю, как быть. Программа без форков работает нормально.