Eu fiz algumas pesquisas sobre esse assunto, mas não entendi muito bem.
De msgsnd man page
:
The msgsnd() system call appends a copy of the message pointed to by
msgp to the message queue whose identifier is specified by msqid.
Isso significa que quando eu uso um msgget
para criar uma fila de mensagens, o Enfileirar e Desenfileirar acontece automaticamente com msgsnd
e msgrcv
?
Por exemplo, se eu quiser usar uma fila de mensagens que possa armazenar simultaneamente N mensagens, quando eu usar msgsnd
i colocar uma mensagem na fila e quando eu usar msg rcv
i, pegue-a daqui e apague essa mensagem ?
Se esse for o caso, eu não deveria implementar manualmente enfileirar e desenfileirar para criar uma lista de N mensagens porque é suficiente definir um valor para const void *msgp
de int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
para adicionar mais uma mensagem na fila e é suficiente que isso é recebido por msgrcv
para ser excluído da fila, caso contrário ele permanece na fila até que seja recebido por algum processo, estou correto?
Mas quantas mensagens essa fila pode conter, se eu não for a única a definir quantas podem ser contidas?