.\" -*- nroff -*- .\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .TH IPC 5 "1/11/1993" "Linux 0.99.13" "Manual do Programador Linux" .SH NOME ipc \- Mecanismo de inter-comunicação do System V .SH SINOPSE .nf .B # include .B # include .B # include .B # include .B # include .SH 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 .B resource significa uma instância de um entre muitos mecanismos. .SS Permissão de Acessos aos Recursos Para cada recurso o sistema usa uma estrutura comum do tipo .BR "struct ipc_perm" para armazernar informações necessárias na determincação das permissões para executar uma operação ipc. A estrutura .B ipc_perm , definida pelo arquivo de cabeçalho do sistema .I , incluí os seguintes membros: .sp .B ushort cuid; /* identificação numérica do usuário criador*/ .br .B ushort cgid; /* identificação numérica do grupo criador*/ .br .B ushort uid; /* identificação numérica do usuário proprietário*/ .br .B ushort gid; /* identificação numérica do grupo proprietário*/ .br .B ushort mode; /* r/w permissões */ .PP O .B modo membro da estrutura .B 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: .sp .nf 0400 Leitura pelo usuário. 0200 Escrita pelo usuário. .sp .5 0040 Leitura pelo grupo. 0020 Escrita pelo grupo. .sp .5 0004 Leitura pelos demais. 0002 Escrita pelos demais. .fi .PP 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. .PP O arquivo cabeçalho de sistema define as seguintes constantes simbólicas: .TP 14 .B IPC_CREAT Criar a entrada se a chave não existe. .TP .B IPC_EXCL Falhar se a chave existe. .TP .B IPC_NOWAIT Errar se a requesição esperar muito. .TP .B IPC_PRIVATE Chave privada. .TP .B IPC_RMID Remover recurso. .TP .B IPC_SET Fixar opção do recurso. .TP .B IPC_STAT Pegar opção do recurso. .PP Note que .B IPC_PRIVATE é um tipo .B key_t , enquanto todos as outras constantes simbólicas são campos flag ou-hábil dentro de uma variável tipo .B int . .SS Fila de mensagens Uma fila de mensagens é unicamente identificada por un inteiro positivo .RI "(its " msqid ) e possui uma estrutura de dados associada do tipo .BR "struct msquid_ds" , definida em .IR , contendo os seguintes membros: .sp .B struct ipc_perm msg_perm; .br .B ushort msg_qnum; /* nada de mensagens na fila */ .br .B ushort msg_qbytes; /* máximo de bytes na fila */ .br .B ushort msg_lspid; /* pid da última chamada msgsnd */ .br .B ushort msg_lrpid; /* pid da última chamada msgrcv */ .br .B time_t msg_stime; /* última hora de msgsnd */ .br .B time_t msg_rtime; /* última hora de msgrcv */ .br .B time_t msg_ctime; /* úlitma hora de alteração */ .TP 11 .B msg_perm .B ipc_perm estruturas que especificam a permissão de acesso na fila de mensagem. .TP .B msg_qnum Número de mensagems atualmente na fila de mensagens. .TP .B msg_qbytes Número máximo de bytes de texto de mensagem texto permetida na fila de mensagens. .TP .B msg_lspid ID do processo que executou a última chamada de sistema .B msgsnd . .TP .B msg_lrpid ID do processo que executou a última chamada de sistema .B msgrcv . .TP .B msg_stime A hora da última chamada de sistema .B msgsnd . .TP .B msg_rtime A hora da última chamada de sistema .B msgcv . .TP .B msg_ctime A hora da última chamada de sistema que alterou um membro da estrutura .B msqid_ds . .SS Conjunto sinalizador Um conjunto sinalizador é unicamente identificado por um inteiro positivo .RI "(its " semid ) e possui uma estrutura de dados associada do tipo .BR "struct semid_ds" , definida em .IR , contendo os seguintes membros: .sp .B struct ipc_perm sem_perm; .br .B time_t sem_otime; /* tempo da última operação */ .br .B time_t sem_ctime; /* tempo da última alteração */ .br .B ushort sem_nsems; /* contagem de sems no conjunto */ .TP 11 .B sem_perm .B ipc_perm estruturas que especificam a permissão de acesso no conjunto sinalizador. .TP .B sem_otime Hora da última chamada de sistema .B semop . .TP .B sem_ctime Hora da última chamada de sistema .B semctl que alterou um membro de uma estrutura citada acima ou um dos sinais pertencentes ao conjunto. .TP .B sem_nsems Número de sinais no conjunto. Cada sinal de um conjunto é referenciado por um inteiro não negativo desde .B 0 até .BR sem_nsems\-1 . .PP Um sianl é uma estrutura de dados do tipo .B "struct sem" contendo os seguintes membros: .sp .B ushort semval; /* valor do sinal */ .br .B short sempid; /* pid para a última operação */ .br .B ushort semncnt; /* número de espera semval para adicionar */ .br .B ushort semzcnt; /* número de espera semval = 0 */ .TP 11 .B semval Valor do sinal: um interio não negativo. .TP .B sempid ID do último processo que executou uma operação sinalizada neste sinal. .TP .B semncnt Número de processos supendidos aguardando por .B semval para adicionar. .TP .B semznt Número de processos supendidos aguardando por .B semval para se transformar em zero. .SS Segmentos Compartilhados de Memória Um segmento compartilhado de memória é unicamente identificado por um inteiro positivo .RI "(its " shmid ) e possui uma estrutura de dados associada do tipo .BR "struct shmid_ds" , definida em .IR , contendo os seguintes membros: .sp .B struct ipc_perm shm_perm; .br .B int shm_segsz; /* tamanho do segmento */ .br .B ushort shm_cpid; /* pid do criador */ .br .B ushort shm_lpid; /* pid, da última operação */ .br .B short shm_nattch; /* número atual de uniões */ .br .B time_t shm_atime; /* hora da última união */ .br .B time_t shm_dtime; /* hora da úlitma desunião */ .br .B time_t shm_ctime; /* hora da úlitma alteração */ .TP 11 .B shm_perm .B ipc_perm estrutura que especifica as permissões de acesso no segmento compartilhado de memória. .TP .B shm_segsz Tamanho em bytes do segmento compartilhado de memória. .TP .B shm_cpid ID do processo que criou o segmento compartilhado de memória .TP .B shm_lpid ID do úlitmo processo que executou uma chamada de sistema .B shmat ou .B shmdt . .TP .B shm_nattch Número de uniões atuais ativas para este segmento compartilhado de memória. .TP .B shm_atime Hora da úlitma chamada de sistema .B shmat . .TP .B shm_dtime Hora da úlitma chamada de sistema .B shmdt . .TP .B shm_ctime Hora da última chamada de sistema .B shmctl que alterou .BR shmid_ds . .SH "VEJA TAMBÉM" .BR ftok (3), .BR msgctl (2), .BR msgget (2), .BR msgrcv (2), .BR msgsnd (2), .BR semctl (2), .BR semget (2), .BR semop (2), .BR shmat (2), .BR shmctl (2), .BR shmget (2), .BR shmdt (2). .SH TRADUZIDO POR LDP-BR em 21/08/2000. \&\fR\&\f(CWAndré L. Fassone Canova (tradução)\fR \&\fR\&\f(CWCarlos Augusto Horylka (revisão)\fR