Provided by: manpages-pt_20040726-2_all bug

NOME

       ipc - Mecanismo de inter-comunicação do System V

SINOPSE

       # include <sys/types.h>
       # include <sys/ipc.h>
       # include <sys/msg.h>
       # include <sys/sem.h>
       # include <sys/shm.h>

DESCRIÇÃO

       Esta  página  do  manual  referese  a  implementação  para  o  Linux do
       mecanismo de inter-comunicação usado no System V:  fila  de  mensagens,
       sinalização  por  semáfaros  e segmentos compartilhados de memória.  Na
       seqüencia, a palavra resource  significa  uma  instância  de  um  entre
       muitos mecanismos.

   Permissão de Acessos aos Recursos
       Para  cada  recurso  o  sistema  usa uma estrutura comum do tipo struct
       ipc_perm para armazernar informações necessárias na  determincação  das
       permissões  para  executar  uma  operação  ipc.  A estrutura ipc_perm ,
       definida pelo arquivo de cabeçalho do sistema <sys/ipc.h> ,  incluí  os
       seguintes membros:

            ushort cuid;    /* identificação numérica do usuário criador*/
            ushort cgid;    /* identificação numérica do grupo criador*/
            ushort uid; /* identificação numérica do usuário proprietário*/
            ushort gid; /* identificação numérica do grupo proprietário*/
            ushort mode; /* r/w permissões */

       O  modo  membro  da  estrutura  ipc_perm determina, com ele abaixo de 9
       bits, a permissão de acesso para o recurso para um processo  executando
       uma  chamada  de  sistema  ipc.   As  permissões são interpretadas como
       segue:

            0400 Leitura pelo usuário.
            0200 Escrita pelo usuário.
            0040 Leitura pelo grupo.
            0020 Escrita pelo grupo.
            0004 Leitura pelos demais.
            0002 Escrita pelos demais.

       Os bits 0100, 0010 e 0001 (os bits para execução) não são  usados  pelo
       sistema.  Furthermore "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    Errar se a requesição esperar muito.

       IPC_PRIVATE   Chave privada.

       IPC_RMID      Remover recurso.

       IPC_SET       Fixar opção do recurso.

       IPC_STAT      Pegar opção do recurso.

       Note  que  IPC_PRIVATE  é  um  tipo  key_t  ,  enquanto todos as outras
       constantes simbólicas são campos flag ou-hábil dentro de  uma  variável
       tipo int

   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 ipc_perm msg_perm;
            ushort msg_qnum;     /* nada de mensagens na fila */
            ushort msg_qbytes;   /* máximo de bytes na fila */
            ushort msg_lspid;    /* pid da última chamada msgsnd */
            ushort msg_lrpid;    /* pid da última chamada msgrcv */
            time_t msg_stime;    /* última hora de msgsnd */
            time_t msg_rtime;    /* última hora de msgrcv */
            time_t msg_ctime;    /* úlitma hora de alteração */

       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

       msg_lrpid  ID do processo que executou  a  última  chamada  de  sistema
                  msgrcv

       msg_stime  A hora da última chamada de sistema msgsnd

       msg_rtime  A hora da última chamada de sistema msgcv

       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 ipc_perm sem_perm;
            time_t sem_otime;    /* tempo da última operação */
            time_t sem_ctime;    /* tempo da última alteração */
            ushort sem_nsems;    /* contagem de sems no conjunto */

       sem_perm   ipc_perm estruturas que especificam a permissão de acesso no
                  conjunto sinalizador.

       sem_otime  Hora da última chamada de sistema semop

       sem_ctime  Hora da última chamada de  sistema  semctl  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 sianl é uma estrutura de  dados  do  tipo  struct  sem  contendo  os
       seguintes membros:

            ushort semval;  /* valor do sinal */
            short sempid;   /* pid para a última operação */
            ushort semncnt;      /* número de espera semval para adicionar */
            ushort semzcnt;      /* número de espera semval = 0 */

       semval     Valor do sinal: um interio não negativo.

       sempid     ID  do  último processo que executou uma operação sinalizada
                  neste sinal.

       semncnt    Número de processos supendidos aguardando  por  semval  para
                  adicionar.

       semznt     Número de processos supendidos aguardando por semval para se
                  transformar em zero.

   Segmentos Compartilhados de Memória
       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 ipc_perm shm_perm;
            int shm_segsz;  /* tamanho do segmento */
            ushort shm_cpid;     /* pid do criador */
            ushort shm_lpid;     /* pid, da última operação */
            short shm_nattch;    /* número atual de uniões */
            time_t shm_atime;    /* hora da última união */
            time_t shm_dtime;    /* hora da úlitma desunião */
            time_t shm_ctime;    /* hora da úlitma alteração */

       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 ou shmdt

       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

       shm_dtime  Hora da úlitma chamada de sistema shmdt

       shm_ctime  Hora  da  última  chamada  de  sistema  shmctl  que  alterou
                  shmid_ds.

VEJA TAMBÉM

       ftok(3),  msgctl(2),  msgget(2),   msgrcv(2),   msgsnd(2),   semctl(2),
       semget(2), semop(2), shmat(2), shmctl(2), shmget(2), shmdt(2).

TRADUZIDO POR LDP-BR em 21/08/2000.

       André  L.  Fassone  Canova  <lonelywolf@blv.com.br>  (tradução)  Carlos
       Augusto Horylka <horylka@conectiva.com.br> (revisão)