Capítulo 2.10 - Comunicación Inter-Proceso
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender los mecanismos de comunicación inter-proceso (IPC)
- Utilizar señales para comunicarse
- Comprender los pipes y redirecciones
- Utilizar sockets para la comunicación en red
¿Qué es IPC?
IPC (Inter-Process Communication) se refiere a los mecanismos que permiten a los procesos comunicarse y sincronizar sus acciones.
Señales
Las señales son notificaciones asíncronas enviadas a un proceso.
Señales comunes:
SIGTERM (15): Terminación eleganteSIGKILL (9): Terminación forzada (no puede ser ignorada)SIGSTOP (19): SuspenderSIGCONT (18): ReanudarSIGHUP (1): Recargar configuraciónSIGINT (2): Interrupción (Ctrl+C)
# Enviar una señal
kill -SIGTERM PID
kill -15 PID
kill -9 PID # Forzar
# Ver señales disponibles
kill -l
# Ignorar una señal (en un script)
trap '' SIGINT
Pipes
Los pipes permiten redirigir la salida de un proceso a la entrada de otro.
Pipes Anónimos
# Pipe simple
commande1 | commande2
# Ejemplo
ps aux | grep apache
cat fichier.txt | sort | uniq
Named Pipes (FIFO)
# Crear un named pipe
mkfifo mon_pipe
# Proceso 1 escribe
echo "Hello" > mon_pipe
# Proceso 2 lee
cat < mon_pipe
Redirecciones
Las redirecciones permiten controlar la entrada/salida:
# Redirección de salida
commande > fichier # Sobrescribir
commande >> fichier # Añadir
# Redirección de error
commande 2> erreur.log
commande 2>&1 # Error a salida
# Redirección de entrada
commande < fichier
# Here document
commande << EOF
ligne 1
ligne 2
EOF
Sockets
Los sockets permiten la comunicación en red entre procesos.
Sockets Unix (Local)
# Crear un socket Unix
nc -lU /tmp/mon_socket
# Conectarse
nc -U /tmp/mon_socket
Sockets TCP/IP (Red)
# Servidor
nc -l 8080
# Cliente
nc localhost 8080
Memoria Compartida
La memoria compartida permite que varios procesos accedan a la misma zona de memoria.
Ventajas:
- Comunicación rápida
- Sin copia de datos
- Eficiente para grandes cantidades
Herramientas:
shmget,shmat(System V)/dev/shm(tmpfs)
Message Queues
Las message queues permiten el envío de mensajes estructurados entre procesos.
Características:
- Mensajes tipados
- Cola de espera
- Persistencia opcional
Comandos:
# Ver las message queues
ipcs -q
# Eliminar
ipcrm -q ID
Semáforos
Los semáforos permiten la sincronización entre procesos.
Uso:
- Control de acceso a un recurso
- Evitar condiciones de carrera
- Coordinación entre procesos
Ejemplos Prácticos
Pipeline Complejo
# Encontrar los 10 procesos que más CPU usan
ps aux --sort=-%cpu | head -11 | tail -10
# Contar las líneas en varios archivos
cat *.txt | wc -l
# Filtrar y formatear
grep ERROR /var/log/app.log | awk '{print $1, $2}' | sort
Comunicación con Señales
# Script que maneja señales
#!/bin/bash
trap 'echo "Señal recibida, limpiando..."; exit' SIGTERM SIGINT
while true; do
echo "Trabajo en curso..."
sleep 1
done
Resumen
En este capítulo, usted ha aprendido:
IPC: Mecanismos de comunicación inter-proceso
Señales: Notificaciones asíncronas (SIGTERM, SIGKILL, etc.)
Pipes: Redirección de salida/entrada (|, >, <)
Sockets: Comunicación en red (Unix, TCP/IP)
Memoria Compartida: Acceso a memoria común
Message Queues: Mensajes estructurados
Semáforos: Sincronización
Próximos Pasos
Módulo 3: Sistema de Archivos
Módulo 4: Gestión de Procesos
Capítulo creado el: Diciembre 2024