Я создал очередь сообщений, и часть отправителя успешно создает и отправляет сообщение в очередь сообщений.
Я использовал IPC_PRIVATE
в качестве ключа msgget()
на стороне отправителя.
Теперь мой вопрос: какой ключ использовать в msgget()
на стороне получателя?
Использование IPC_PRIVATE
на стороне получателя в качестве ключа в msgget()
не принимает сообщение и дает сбой.
Следует также упомянуть, что msgsnd()
в части отправителя указывает на ошибку (возвращает -1), но при печати с perror()
выводом будет Success
, и сообщение успешно отправляется в очередь сообщений иможно увидеть с помощью команды ipcs -q на терминале.Я не знаю, почему это происходит.
if(msgsnd(msqid,&msgp,88,IPC_NOWAIT) == 0)
{
perror("\nsend : msgsnd FAIL");
msgctl(msqid,IPC_RMID,buf);
return 1;
}
Вывод: send: msgsnd FAIL: Success