Pular para o conteúdo principal

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 graciosa
  • SIGKILL (9): Finalização forçada (não pode ser ignorado)
  • SIGSTOP (19): Suspender
  • SIGCONT (18): Retomar
  • SIGHUP (1): Recarregar configuração
  • SIGINT (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