Contenidos

1 2 3 4 5 6 7 8 9 |
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
1 |
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
1 |
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
1 |
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
1 |
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
1 |
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
1 |
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
1 |
comunicar_procesos() |
comunicar_procesos()
: Llama a la función comunicar_procesos
para ejecutar el código definido en ella.