LinuxForum.Fans
Тема

Процессы и их общая память fork() mmap()

Автор: Davidow 2 сообщений 1419 просмотров
#276709

Добрый день!

У меня вопрос по процессам которые общаются друг с другом при помащи общей памяти.

Для решения задачи я использую такой сценарий...

Создаю Shared-Memory:

mmap(NULL,sizeof(ioc_app), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);

После этого создаю 2 процесса:

for(i=0;i<2;i++)
{
if((pid = fork()) < 0) {
printf(stderr, "Error... %s\n", strerror(errno));
}

else if(pid == 0){
/* Дочерний процесс
Он пуст
*/

break;
}

else{
/* Родитель*/
/* Тут идёт инициализация компонентов процесса
}

Запускаю программу, получаю ашибку: pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed

Подскажите пожалуйста что я делаю не так.

Спасибо !

#276807
"Davidow" написал:
printf(stderr, "Error... %s\n", strerror(errno));

тут fprintf. опечатка?

"Davidow" написал:
Подскажите пожалуйста что я делаю не так.

во-первых, неправильно строишь топик: давай минимальный компилируемый не работающий код, а не его некие ошмётки...
во-вторых, POSIX говорит, что не знает MAP_ANONYMOUS (хоть он и есть почти везде) для разделяемой памяти есть shmget() и компания... ну это так, для справки...
ну и напоследок: дебагер в зубы и смотри на какой строчки вываливается ошибка...

Войдите или зарегистрируйтесь, чтобы ответить.