Мьютекс, разделяемый между процессами

Я пытаюсь создать систему, которая состоит из сервера и нескольких клиентов, которые пытаются общаться друг с другом. Клиенты помещают данные в общую память (созданную с помощью ftok / shmget), а затем могут записывать данные в эту память. Они состоят из 2 отдельных программ.

Сервер считывает значения, которые клиенты записывают в общую память, и записывает их в файл. Я могу заставить клиентов записывать данные в общую память и сервер для чтения данных, но у меня возникают проблемы с блокировкой общей памяти, поэтому несколько клиентов не пишут одновременно.

Я попытался создать семафор (используя sem_open), но это не распределяется между процессами. Как я могу разделить семафор между процессами (или мьютексами, так как они, вероятно, будут работать лучше)?

0

Решение

Вы хотите использовать именованный семафор или мьютекс:

int permissions = 0644;
sem_t *shared_sem;
unsigned int inital_value = 1;

shared_sem = sem_open("SharedSem", O_CREAT, permissions, inital_value);

Также убедитесь, что вы правильно установили разрешения.

2

Другие решения

использовать «именованный» семафор … например «/ someuniquename», которое используется обоими процессами.

1

По вопросам рекламы [email protected]