1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import os # Crear el pipe pipe_in, pipe_out = os.pipe() # Crear un proceso hijo pid = os.fork() if pid == 0: # Cerrar el pipe de entrada os.close(pipe_in) # Escribir en el pipe de salida mensaje = "Hola, soy el proceso hijo" os.write(pipe_out, mensaje.encode()) # Cerrar el pipe de salida os.close(pipe_out) else: # Cerrar el pipe de salida os.close(pipe_out) # Leer del pipe de entrada mensajepapi = "Hola, soy el proceso papito" print(mensajepapi) mensaje = os.read(pipe_in, 1024).decode() print(mensaje) # Cerrar el pipe de entrada os.close(pipe_in) |
En este ejemplo, se crea un pipe utilizando la función os.pipe()
. Esto devuelve dos descriptores de archivo: uno para el extremo de escritura (pipe_out
) y otro para el extremo de lectura (pipe_in
). Luego, se crea un proceso hijo utilizando la función os.fork()
. En el proceso hijo, se cierra el extremo de entrada del pipe (pipe_in
), se escribe un mensaje en el extremo de salida (pipe_out
) utilizando la función os.write()
, y se cierra el extremo de salida (pipe_out
). En el proceso padre, se cierra el extremo de salida del pipe (pipe_out
), se lee el mensaje del extremo de entrada (pipe_in
) utilizando la función os.read()
, se imprime el mensaje, y se cierra el extremo de entrada (pipe_in
).
Ten en cuenta que los procesos se ejecutan en paralelo y pueden no terminar en el orden esperado. También es importante asegurarse de cerrar todos los descriptores de archivo.