- buster-backports 4.9.3-4~bpo10+1
SVIPC(7) | Manual do Programador do Linux | SVIPC(7) |
NOME¶
sysvipc - mecanismo de inter-comunicação do System VSINOPSE¶
#include <sys/msg.h> #include <sys/sem.h> #include <sys/shm.h>
DESCRIÇÃO¶
This manual page refers to the Linux implementation of the System V interprocess communication (IPC) mechanisms: message queues, semaphore sets, and shared memory segments. In the following, the word resource means an instantiation of one among such mechanisms.Resource access permissions¶
For each resource, the system uses a common structure of type struct ipc_perm to store information needed in determining permissions to perform an IPC operation. The ipc_perm structure includes the following members:
struct ipc_perm { uid_t cuid; /* creator user ID */ gid_t cgid; /* creator group ID */ uid_t uid; /* owner user ID */ gid_t gid; /* owner group ID */ unsigned short mode; /* r/w permissions */ };
The mode member of the ipc_perm structure defines, with its lower 9 bits, the access permissions to the resource for a process executing an IPC system call. The permissions are interpreted as follows:
0400 Read by user. 0200 Write by user. 0040 Read by group. 0020 Write by group. 0004 Read by others. 0002 Write by others.
Os bits 0100, 0010 e 0001 (os bits para execução) não são usados pelo sistema. Em qualquer caso "escrita" significa efetivamente "modificar" para um conjunto de sinalizações.
O arquivo cabeçalho de sistema define as seguintes constantes simbólicas:
- IPC_CREAT
- Criar a entrada se a chave não existe.
- IPC_EXCL
- Falhar se a chave existe.
- IPC_NOWAIT
- Devolver um erro se a requesição esperar muito.
- IPC_PRIVATE
- Chave privada.
- IPC_RMID
- Remover recurso.
- IPC_SET
- Selecionar uma opção do recurso.
- IPC_STAT
- Obter opção do recurso.
Note that IPC_PRIVATE is a key_t type, while all the other symbolic constants are flag fields and can be OR'ed into an int type variable.
Fila de mensagens¶
Uma fila de mensagens é unicamente identificada por un inteiro positivo (its msqid) e possui uma estrutura de dados associada do tipo struct msquid_ds, definida em <sys/msg.h>, contendo os seguintes membros:
struct msqid_ds { struct ipc_perm msg_perm; msgqnum_t msg_qnum; /* no of messages on queue */ msglen_t msg_qbytes; /* bytes max on a queue */ pid_t msg_lspid; /* PID of last msgsnd(2) call */ pid_t msg_lrpid; /* PID of last msgrcv(2) call */ time_t msg_stime; /* last msgsnd(2) time */ time_t msg_rtime; /* last msgrcv(2) time */ time_t msg_ctime; /* last change time */ };
- msg_perm
- ipc_perm estruturas que especificam a permissão de acesso na fila de mensagem.
- msg_qnum
- Número de mensagems atualmente na fila de mensagens.
- msg_qbytes
- Número máximo de bytes de texto de mensagem texto permetida na fila de mensagens.
- msg_lspid
- ID do processo que executou a última chamada de sistema msgsnd(2).
- msg_lrpid
- ID do processo que executou a última chamada de sistema msgrcv(2).
- msg_stime
- A hora da última chamada de sistema msgsnd(2).
- msg_rtime
- A hora da última chamada de sistema msgrcv(2).
- msg_ctime
- A hora da última chamada de sistema que alterou um membro da estrutura msqid_ds.
Conjunto sinalizador¶
Um conjunto sinalizador é unicamente identificado por um inteiro positivo (its semid) e possui uma estrutura de dados associada do tipo struct semid_ds, definida em <sys/sem.h>, contendo os seguintes membros:-
struct semid_ds { struct ipc_perm sem_perm; time_t sem_otime; /* last operation time */ time_t sem_ctime; /* last change time */ unsigned long sem_nsems; /* count of sems in set */ };
- sem_perm
- ipc_perm estruturas que especificam a permissão de acesso no conjunto sinalizador.
- sem_otime
- Hora da última chamada de sistema semop(2).
- sem_ctime
- Hora da última chamada de sistema semctl(2) que alterou um membro de uma estrutura citada acima ou um dos sinais pertencentes ao conjunto.
- sem_nsems
- Número de sinais no conjunto. Cada sinal de um conjunto é referenciado por um inteiro não negativo desde 0 até sem_nsems-1.
Um sinal é uma estrutura de dados do tipo struct sem contendo os seguintes membros:
struct sem { int semval; /* semaphore value */ int sempid; /* PID of process that last modified */ };
- semval
- Valor do sinal: um interio não negativo.
- sempid
- PID of the last process that modified the value of this semaphore.
Shared memory segments¶
Um segmento compartilhado de memória é unicamente identificado por um inteiro positivo (its shmid) e possui uma estrutura de dados associada do tipo struct shmid_ds, definida em <sys/shm.h>, contendo os seguintes membros:
struct shmid_ds { struct ipc_perm shm_perm; size_t shm_segsz; /* size of segment */ pid_t shm_cpid; /* PID of creator */ pid_t shm_lpid; /* PID, last operation */ shmatt_t shm_nattch; /* no. of current attaches */ time_t shm_atime; /* time of last attach */ time_t shm_dtime; /* time of last detach */ time_t shm_ctime; /* time of last change */ };
- shm_perm
- ipc_perm estrutura que especifica as permissões de acesso no segmento compartilhado de memória.
- shm_segsz
- Tamanho em bytes do segmento compartilhado de memória.
- shm_cpid
- ID do processo que criou o segmento compartilhado de memória
- shm_lpid
- ID do úlitmo processo que executou uma chamada de sistema shmat(2) ou shmdt(2).
- shm_nattch
- Número de uniões atuais ativas para este segmento compartilhado de memória.
- shm_atime
- Hora da úlitma chamada de sistema shmat(2).
- shm_dtime
- A hora da última chamada de sistema shmdt(2).
- shm_ctime
- Hora da última chamada de sistema shmctl(2) que alterou shmid_ds.
IPC namespaces¶
For a discussion of the interaction of System V IPC objects and IPC namespaces, see ipc_namespaces(7).VEJA TAMBÉM¶
ipcmk(1), ipcrm(1), ipcs(1), lsipc(1), ipc(2), msgctl(2), msgget(2), msgrcv(2), msgsnd(2), semctl(2), semget(2), semop(2), shmat(2), shmctl(2), shmdt(2), shmget(2), ftok(3), ipc_namespaces(7)COLOFÃO¶
Esta página faz parte da versão 5.04 do projeto Linux man-pages. Uma descrição do projeto, informações sobre relatórios de bugs e a versão mais recente desta página podem ser encontradas em https://www.kernel.org/doc/man-pages/.TRADUÇÃO¶
A tradução para português brasileiro desta página man foi criada por André Luiz Fassone <lonely_wolf@ig.com.br> e Carlos Augusto Horylka <horylka@conectiva.com.br>Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.
Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.
10 outubro 2019 | Linux |