
import subprocess
def comunicar_procesos():
proceso1 = subprocess.Popen(["echo", "Hola, proceso 2!"], stdout=subprocess.PIPE)
proceso2 = subprocess.Popen(["grep", "Hola"], stdin=proceso1.stdout, stdout=subprocess.PIPE)
salida = proceso2.communicate()[0]
print(salida.decode())
comunicar_procesos()
1. Importación del módulo subprocess
import subprocess
import subprocess: Importa el módulo subprocess, que permite crear nuevos procesos, conectarse a sus canales de entrada/salida/error y obtener sus códigos de retorno.
2. Definición de la función comunicar_procesos
def comunicar_procesos():
def comunicar_procesos():: Define una función llamada comunicar_procesos que encapsula el código para crear y comunicar entre dos procesos.
3. Creación del primer proceso
proceso1 = subprocess.Popen(["echo", "Hola, proceso 2!"], stdout=subprocess.PIPE)
– subprocess.Popen: Inicia un nuevo proceso.
– ["echo", "Hola, proceso 2!"]: Comando que se ejecuta en el nuevo proceso. echo es un comando que imprime un texto, en este caso, «Hola, proceso 2!».
– stdout=subprocess.PIPE: Redirige la salida estándar del primer proceso a un pipe, que puede ser leído por otro proceso.
4. Creación del segundo proceso
proceso2 = subprocess.Popen(["grep", "Hola"], stdin=proceso1.stdout, stdout=subprocess.PIPE)
– subprocess.Popen: Inicia otro nuevo proceso.
– ["grep", "Hola"]: Comando que se ejecuta en el segundo proceso. grep es un comando que busca patrones en texto. En este caso, busca la palabra «Hola».
– stdin=proceso1.stdout: Redirige la entrada estándar del segundo proceso a la salida estándar del primer proceso, creando un pipe entre los dos procesos.
– stdout=subprocess.PIPE: Redirige la salida estándar del segundo proceso a un pipe, que será leído posteriormente.
5. Comunicación entre procesos y obtención de la salida
salida = proceso2.communicate()[0]
– proceso2.communicate(): Espera a que el segundo proceso termine y lee su salida.
– [0]: Obtiene la salida estándar del segundo proceso.
6. Decodificación y muestra de la salida
print(salida.decode())
– salida.decode(): Decodifica la salida de bytes a una cadena de texto utilizando la codificación predeterminada (UTF-8).
– print(): Imprime la cadena de texto decodificada en la salida estándar (pantalla).
7. Llamada a la función comunicar_procesos
comunicar_procesos()
comunicar_procesos(): Llama a la función comunicar_procesos para ejecutar el código definido en ella.

