¿Qué se entiende por "mantener la tubería abierta"?

He estado siguiendo tutoriales para varios ejercicios de explotación para aplicaciones de Linux. Entiendo el contenido de estos suficientemente bien, sin embargo, algunos se refieren al uso de cat para "mantener la tubería abierta", por ejemplo, aquí .

Por ejemplo:

(python2 exploit.py ; cat) | ./programToExploit 

¿Qué significa "mantener la tubería abierta" en la práctica, y cómo se mantiene abierta la tubería como con el command anterior?

¿Lo intentaste?

Vea la diferencia entre

 echo 'ls' | sh -s 

y

 ( echo 'ls'; cat ) | sh -s 

Aquí, sh -s iniciará una session de shell que lee commands para ejecutar desde la input estándar ( -s ).

En el primer ejemplo, el shell simplemente ejecutará ls y saldrá (ya que no hay más input).

En el segundo ejemplo, el shell ejecutará ls y luego esperará hasta que no haya más input. El flujo de input a sh -s primero fue generado por el command echo , pero luego cat hizo cargo del rol. El process cat se leerá desde la session del shell principal y pasará commands a través del conducto a sh -s . Si escribe ls , o cualquier otro command (no habrá un aviso para escribirlo), el shell ejecutará esos commands.

Esto continuará hasta que termine el process de cat presionando Ctrl + D en una línea vacía para señalar el final de la input.

Creo que eso es lo que quiere decir con "mantener la tubería abierta".