Очереди сообщений сохраняются после завершения процесса.Причина, по которой вторая попытка создания не удалась, заключается в том, что вы задаете режим как 666
, что приводит к довольно странным разрешениям:
$ ls -l /dev/mqueue/serverqueue
--w--wx--T. 1 fw fw 80 Feb 17 13:13 serverqueue
Нет разрешений на чтение, поэтому открытие с O_RDWR
завершается неудачей.
Кроме того, поскольку имена очередей являются общим ресурсом, это обычно приводит к уязвимости безопасности, если вы создаете очереди с O_CREAT
вместо O_CREAT | O_EXCL
.Другой пользователь мог создать ту же очередь с другими разрешениями и получить доступ к тому, что вы пытаетесь сделать с этой очередью.