Добрый день!
У меня вопрос по процессам которые общаются друг с другом при помащи общей памяти.
Для решения задачи я использую такой сценарий...
Создаю 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
Подскажите пожалуйста что я делаю не так.
Спасибо !
LinuxForum.Fans
Процессы и их общая память fork() mmap()
Автор: Davidow
2 сообщений
1419 просмотров
printf(stderr, "Error... %s\n", strerror(errno));
тут fprintf. опечатка?
Подскажите пожалуйста что я делаю не так.
во-первых, неправильно строишь топик: давай минимальный компилируемый не работающий код, а не его некие ошмётки...
во-вторых, POSIX говорит, что не знает MAP_ANONYMOUS (хоть он и есть почти везде) для разделяемой памяти есть shmget() и компания... ну это так, для справки...
ну и напоследок: дебагер в зубы и смотри на какой строчки вываливается ошибка...
Войдите или зарегистрируйтесь, чтобы ответить.