Сбой mq_open () с O_CREAT, в то время как open () с O_CREAT был успешным - PullRequest
0 голосов
/ 25 февраля 2020

Я пишу некоторые тестовые коды, скомпилированные с x86_64-pokysdk- linux (yocto)

// return -1
m_mqueue_id = mq_open(path, O_RDWR | O_CREAT, 0666, NULL);

// return 3
openfile_id = open(path, O_RDWR | O_CREAT);

Я понятия не имею, почему mq_open дает сбой, даже если я дал опцию O_CREAT.

Есть ли какие-нибудь статьи или решения о подобной ситуации?

РЕДАКТИРОВАТЬ: Я посмотрел mq_overview (7), и я понимаю, что я не полностью понимал саму очередь сообщений. изменил путь к / dev / mqueue / ~~ и проблема решена.

On Linux, message queues are created in a virtual filesystem.  (Other
       implementations may also provide such a feature, but the details are
       likely to differ.)  This filesystem can be mounted (by the superuser)
       using the following commands:

           # mkdir /dev/mqueue
           # mount -t mqueue none /dev/mqueue
...