Usando shared memory
Publicado por Perfil removido 23/11/2004
[ Hits: 8.495 ]
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); }
3º EP - Poli USP - Angry Birds (angry bixos)
Jogo Final Fight - Haggar (com gráficos)
POGRAMA EM C REGISTRO DE CADASTRO ALTERAR E REMOVER CLIENTES PRODUTOS
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Primeira vez utilizando Linux Ubuntu 22.04 e já tenho problemas… (3)
warsaw parou de funcionar após atualização do sistema (solução) (1)
Separar trafego da VPN da VPS (0)
Formatando cartão de memoria que nao formata[AJUDA] (17)
Desde que seja DDR3, posso colocar qualquer memória? [RESOLVIDO] (6)