IPC/IP
- IP (Internet Protocol) es el protocolo que define cómo se transfieren los datos entre dispositivos en una red. Forma parte del conjunto de protocolos TCP/IP y se encarga de la dirección y el enrutamiento de paquetes de datos.
- IPC (Inter-Process Communication) es un concepto relacionado con la comunicación entre procesos en un mismo sistema operativo o red, y se puede implementar mediante métodos como sockets, tuberías, colas de mensajes, etc.
- IP: Para dirigir y enviar paquetes entre dispositivos en redes locales o globales (Internet).
- IPC: Para que los procesos colaboren y compartan información dentro de un sistema.
Ejemplo de IPC: Comunicación entre procesos con tuberías
El siguiente ejemplo muestra cómo dos procesos (padre e hijo) se comunican utilizando una tubería para enviar y recibir mensajes.
Código: IPC con tuberías
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define BUFFER_SIZE 256
int main() {
int pipefds[2];
pid_t pid;
char write_msg[BUFFER_SIZE] = "Hola desde el proceso padre.";
char read_msg[BUFFER_SIZE];
// Crear la tubería
if (pipe(pipefds) == -1) {
perror("Error al crear la tubería");
exit(EXIT_FAILURE);
}
// Crear un proceso hijo
pid = fork();
if (pid < 0) {
perror("Error al hacer fork");
exit(EXIT_FAILURE);
}
if (pid == 0) { // Proceso hijo
close(pipefds[1]); // Cerrar el extremo de escritura
read(pipefds[0], read_msg, BUFFER_SIZE); // Leer desde la tubería
printf("Proceso hijo recibió: %s\n", read_msg);
close(pipefds[0]); // Cerrar el extremo de lectura
} else { // Proceso padre
close(pipefds[0]); // Cerrar el extremo de lectura
write(pipefds[1], write_msg, strlen(write_msg) + 1); // Escribir en la tubería
close(pipefds[1]); // Cerrar el extremo de escritura
wait(NULL); // Esperar al proceso hijo
}
return 0;
}
Explicación:
-
Creación de la tubería:
pipe(pipefds)
crea dos extremos: uno para lectura (pipefds[0]
) y otro para escritura (pipefds[1]
). - Comunicación padre-hijo: El padre escribe un mensaje en la tubería, y el hijo lo lee.
-
Sincronización:
wait(NULL)
asegura que el proceso padre espere a que el hijo termine antes de continuar. - Ventajas del IPC: Facilita la comunicación eficiente entre procesos que necesitan colaborar o compartir datos.
Tags
Lenguaje C