Contenidos
Padre (envía información al proceso hijo y recibe la respuesta del hijo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import subprocess def main(): # Crear el proceso hijo process_builder = ["python3", "child.py"] child_process = subprocess.Popen(process_builder, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # Enviar mensaje al proceso hijo child_message = "¡Hola desde el proceso padre!\n" child_process.stdin.write(child_message.encode()) child_process.stdin.flush() # Leer la respuesta del proceso hijo output_message = child_process.stdout.readline().decode().strip() print(f"Mensaje recibido del proceso hijo: {output_message}") # Finalizar el proceso hijo child_process.wait() print(f"Proceso hijo finalizado con código de salida: {child_process.returncode}") if __name__ == "__main__": main() |
Hijo (el hijo recibe el mensaje del padre y responde al padre)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def main(): import sys import os # Leer mensaje del proceso padre parent_message = sys.stdin.readline().strip() # Procesar el mensaje y preparar la respuesta response_message = f"{parent_message} SOY HIJO\n" # Enviar la respuesta al proceso padre sys.stdout.write(response_message) sys.stdout.flush() if __name__ == "__main__": main() |
Explicación del código
parent_process.py:
- Utiliza
subprocess.Popen
para iniciar el proceso hijo constdin
ystdout
redirigidos. - Escribe un mensaje al
stdin
del proceso hijo y lo envía. - Lee la respuesta del
stdout
del proceso hijo. - Espera a que el proceso hijo termine y obtiene el código de salida.
child_process.py:
- Lee el mensaje del
stdin
que proviene del proceso padre. - Prepara una respuesta y la escribe en el
stdout
.
