Usando shared memory
Publicado por Fabio Junior Sabai 23/11/2004
[ Hits: 8.322 ]
O GNU/Linux (e todo SO respeitável) oferece um recurso interessante para quem quer criar programas que conversem entre si. Esse recurso é a memória compartilhada, ou shared memory. Esse primeiro programa cria uma área de memória compartilhada que pode ser acessada por qualquer programa, desde que respeite as políticas de permissão, e é claro, saiba a chave, ou key, da área compartilhada. Num segundo programa estarei mostrando como se faz o acesso a essa área.
#include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <signal.h> char *s; int run = 1; void exit_handler(int signum) { run = 0; } void usr1_handler(int signum) { printf("%s\n", s); } main() { int shmid; struct shmid_ds buf; struct sigaction sig; char *s; sig.sa_flags = 0; sigemptyset(&sig.sa_mask); sig.sa_handler = exit_handler; sigaction(SIGTERM, &sig, NULL); sig.sa_handler = usr1_handler; sigaction(SIGUSR1, &sig, NULL); shmid = shmget(0xFAB10, 100, IPC_CREAT | 0600); if ( shmid == -1 ) { printf("can't creat shared memory\n"); perror("shmget"); exit(1); } if ( shmctl(shmid, IPC_STAT, &buf) != 0 ) { printf("can't stat shared memory\n"); perror("shmctl"); exit(2); } s = (char *) shmat(shmid, 0, 0); if ( s == (void *)-1 ) { printf("can't attach shared memory\n"); perror("shmat"); exit(3); } strcpy(s, "ola mundo"); while( run ) ; shmdt(s); shmctl(shmid, IPC_RMID, 0); exit(0); }
Árvore de busca binária com frequência de consultas
AA linux kernel modificado por minhe
Pilhas C/C++ - Analisador de expressões simples
Atenção a quem posta conteúdo de dicas, scripts e tal (2)
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Ativando o Modo Noturno via Linha de Comando no GNOME/Wayland
Habilitando a importação de senhas no Firefox
Como corrigir o erro do VirtualBox travar a máquina virtual em tela cheia
Instalando Google Chrome no Ubuntu 24.04 LTS
Quantidade de caracteres suportados na barra de endereços dos navegadores
Como faço pra um script ser executado apenas abrindo um terminal e dan... (3)
instalar linux com intel RST ativo (6)
Instalação agent Relic no alma linux (0)
Não Consigo acessar o menu da Bios após instalação do sistema [RESOLVI... (7)