Как я могу создать общую очередь сообщений POSIX, не создавая ее только для корневого доступа? - PullRequest
0 голосов
/ 21 октября 2019

Я создаю очередь сообщений с помощью API mqueue POSIX:

    mq_open("/myqueue", O_CREAT | O_WRONLY, O_WRONLY, NULL)

Я также подключаю каталог для объектов очереди сообщений:

su
mkdir /dev/mqueue
mount -t mqueue none /dev/mqueue
exit

Когда я запускаю свою программу,очередь сообщений появляется в / dev / mqueue с разрешениями:

---------x

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

Как создатьочередь сообщений POSIX, которая будет использоваться приложением уровня пользователя в Ubuntu 18.04?

1 Ответ

4 голосов
/ 21 октября 2019

Ваши аргументы функции неверны. Вы передаете O_WRONLY как mode , но это флаг, как и другие O_*. Вместо этого вы должны сделать:

mq_open("/myqueue", O_CREAT | O_WRONLY, 0600, NULL);

или другой режим доступа к файлу, который вы хотите (0600 = rw-------).

...