(ES)(Bash Scripting) Trabajar con la entrada estándar de procesos en segundo plano

Cuando ejecutamos un programa en segundo plano suele ser para no volver a saber de él hasta que termine, dejándolo trabajar de forma autónoma. Pero es posible que necesitemos enviar datos a la entrada estándar de dicho programa o leer de su salida estándar. Existen 2 formas de hacerlo: La forma mas sencilla es leer/escribir en el fd(descriptor de archivo) estándar correspondiente al PID del proceso con el que nos queramos comunicar. Por si alguien no lo sabe, la entrada estándar es el fd 0, la salida estándar el 1 y la salida de error el 2. Estos descriptores de archivo se encuentran en el directorio _/proc//fd/. _ Como demostración voy a lanzar un cat que lea de la entrada estándar y voy a introducirle los datos desde otro terminal: Captura de pantalla de 2015-12-21 11-02-42 La segunda forma consiste en redireccionar un archivo fifo al programa con el que queramos hablar antes de mandarlo al background y luego introducir los datos en dicho fifo: Captura de pantalla de 2015-12-21 11-15-51 El comando_ cat> /tmp/fifo-entrada &_ es importante porque evita que el proceso con el que vamos a hablar reciba un fin de archivo nada mas ejecutarlo. Cuando queramos que realmente envíe un EOF y termine tendremos que hacer un kill este cat, cuyo PID tenemos guardado en la variable _pid_cat_. Esta segunda solución es más portable puesto que no en todos los sistemas existe el directorio /proc/pid/fd Fuente

Article automatically imported from my old wordpress blog. Here only for reference. Possible format errors and probable missing images. Sorry about that.

  • Previous post
  • Next post