У меня есть проект домашней работы, который требует создания библиотеки STATIC для обеспечения взаимного доступа к паре именованных каналов.
Эти каналы используются для связи между различными клиентами, использующими библиотеку и сервер.
Теперь предположим, что я хочу использовать мьютексы pthread;как я могу этого достичь?Как процессы могут узнать, в какой области разделяемой памяти хранится мьютекс?А кому нужна эта область памяти?Сервер не может, потому что требуется, чтобы сама библиотека обеспечивала взаимное исключение.
Благодаря asveikau я придумал следующее:
#define SHARED 1
#define MUTEX 1
int main() {
sem_t* mutex = sem_open("mutex", O_CREAT);
sem_init(mutex, SHARED, MUTEX);
fork(), fork(), fork();
sem_wait(mutex);
int i;
for(i = 0; i < 10; i++)
printf("process %d %d\n", getpid(), i), fflush(stdout);
sem_post(mutex);
}
, что из вывода действительно решает мою проблему.
Спасибо всем.