Capítulo 2.10 - Comunicação Interprocessos
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender os mecanismos de comunicação interprocessos (IPC)
- Utilizar sinais para comunicação
- Entender pipes e redirecionamentos
- Utilizar sockets para comunicação em rede
O que é IPC?
IPC (Inter-Process Communication) refere-se aos mecanismos que permitem que processos se comuniquem e sincronizem suas ações.
Sinais
Os sinais são notificações assíncronas enviadas para um processo.
Sinais comuns:
SIGTERM (15): Finalização graciosaSIGKILL (9): Finalização forçada (não pode ser ignorado)SIGSTOP (19): SuspenderSIGCONT (18): RetomarSIGHUP (1): Recarregar configuraçãoSIGINT (2): Interrupção (Ctrl+C)
# Enviar um sinal
kill -SIGTERM PID
kill -15 PID
kill -9 PID # Forçar
# Ver sinais disponíveis
kill -l
# Ignorar um sinal (em um script)
trap '' SIGINT
Pipes
Os pipes permitem redirecionar a saída de um processo para a entrada de outro.
Pipes Anônimos
# Pipe simples
comando1 | comando2
# Exemplo
ps aux | grep apache
cat arquivo.txt | sort | uniq
Named Pipes (FIFO)
# Criar um named pipe
mkfifo meu_pipe
# Processo 1 escreve
echo "Hello" > meu_pipe
# Processo 2 lê
cat < meu_pipe
Redirecionamentos
Os redirecionamentos permitem controlar a entrada/saída:
# Redirecionar saída
comando > arquivo # Sobrescrever
comando >> arquivo # Acrescentar
# Redirecionar erro
comando 2> erro.log
comando 2>&1 # Erro para saída
# Redirecionar entrada
comando < arquivo
# Here document
comando << EOF
linha 1
linha 2
EOF
Sockets
Os sockets permitem a comunicação em rede entre processos.
Sockets Unix (Local)
# Criar um socket Unix
nc -lU /tmp/meu_socket
# Conectar
nc -U /tmp/meu_socket
Sockets TCP/IP (Rede)
# Servidor
nc -l 8080
# Cliente
nc localhost 8080
Memória Compartilhada
A memória compartilhada permite que vários processos acessem a mesma área de memória.
Vantagens:
- Comunicação rápida
- Sem cópia de dados
- Eficiente para grandes volumes
Ferramentas:
shmget,shmat(System V)/dev/shm(tmpfs)
Filas de Mensagem
As filas de mensagem permitem o envio de mensagens estruturadas entre processos.
Características:
- Mensagens tipadas
- Fila de espera
- Persistência opcional
Comandos:
# Ver filas de mensagem
ipcs -q
# Remover
ipcrm -q ID
Semáforos
Os semáforos permitem a sincronização entre processos.
Uso:
- Controle de acesso a um recurso
- Evitar condições de corrida
- Coordenação entre processos
Exemplos Práticos
Pipeline Complexo
# Encontrar os 10 processos que mais usam CPU
ps aux --sort=-%cpu | head -11 | tail -10
# Contar linhas em vários arquivos
cat *.txt | wc -l
# Filtrar e formatar
grep ERROR /var/log/app.log | awk '{print $1, $2}' | sort
Comunicação com Sinais
# Script que lida com sinais
#!/bin/bash
trap 'echo "Sinal recebido, limpando..."; exit' SIGTERM SIGINT
while true; do
echo "Trabalho em andamento..."
sleep 1
done
Resumo
Neste capítulo, você aprendeu:
IPC: Mecanismos de comunicação interprocessos
Sinais: Notificações assíncronas (SIGTERM, SIGKILL, etc.)
Pipes: Redirecionamento de saída/entrada (|, >, <)
Sockets: Comunicação em rede (Unix, TCP/IP)
Memória Compartilhada: Acesso comum à memória
Filas de Mensagem: Mensagens estruturadas
Semáforos: Sincronização
Próximos Passos
Módulo 3: Sistema de Arquivos
Módulo 4: Gerenciamento de Processos
Capítulo criado em: Dezembro 2024