Scroll to navigation

SVIPC(7) Manual do Programador do Linux SVIPC(7)

NOME

sysvipc - mecanismo de inter-comunicação do System V

SINOPSE

#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