Я пишу некоторые тестовые коды, скомпилированные с 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