sub-rotina msgctl
Propósito
Fornece operações de controle de mensagens.
Biblioteca
Biblioteca C Padrão (libc.a)
Sintaxe
int msgctl (MessageQueueID,Command,Buffer)
int MessageQueueID, Command;
struct msqid_ds * Buffer;
Descrição
O subroutine msgctl fornece uma variedade de operações de controle de mensagens conforme especificado pelo parâmetro Command e armazenado na estrutura apontada pelo parâmetro Buffer . A estrutura msqid_ds é definida no arquivo sys/msg.h ..
Os seguintes limites se aplicam à fila de mensagens:
- O tamanho máximo da mensagem é de 4 Megabytes.
- Número máximo de mensagens por fila é 524288.
- Número máximo de IDs de fila de mensagens é 1048576.
- Número máximo de bytes em uma fila é controlado pelo parâmetro ajustável
ipc_msgmnbdo comando vmo .
Parâmetros
| Item | Descrição |
|---|---|
| MessageQueueID | Especifica o identificador da fila de mensagens. |
| Comando | Os seguintes valores para o parâmetro Command estão disponíveis:
|
| de Saída | Aponta para uma estrutura msqid_ds . |
Valores De Retorno
Após a conclusão bem-sucedida, a subroutine msgctl retorna um valor de 0. Caso contrário, um valor de -1 é retornado e a variável global errno é definida para indicar o erro.
Códigos De Erro
A subroutine msgctl não é bem-sucedida se qualquer uma das seguintes condições for verdadeira:
| Item | Descrição |
|---|---|
| EINVAL | O parâmetro Command ou MessageQueueID não é válido. |
| EACCES | O parâmetro Command é igual ao valor IPC_STAT , e o processo de chamada foi negado permissão de leitura. |
| EPERM | O parâmetro Command é igual ao valor IPC_RMID e o ID do usuário efetivo do processo de chamada não tem autoridade de usuário root. Ou, o parâmetro Command é igual ao valor IPC_SET , e o ID do usuário efetivo do processo de chamada não é igual ao valor domsg_perm.uidcampo ou omsg_perm.cuidna estrutura de dados associada ao parâmetro MessageQueueID. |
| EPERM | O parâmetro Command é igual ao valor IPC_SET , uma tentativa foi feita para aumentar o valor domsg_qbytescampo, e o ID do usuário efetivo do processo de chamada não possui autoridade de usuário root. |
| EFAULT | Os pontos de parâmetro Buffer fora do espaço de endereço do processo. |