¿Todos los procesos de Linux escriben EOF en la salida estándar cuando están finalizando/han terminado?

¿Todos los procesos de Linux escriben EOF en la salida estándar cuando están finalizando/han terminado?

Tengo problemas para enviar shutdown -h 0a un lxccontenedor de Debian (es decir, ejecutar este comando en lxc) con el pexpectmódulo de Python (en un script de Python). En este módulo, el usuario puede "esperar" (= esperar la salida del proceso) una determinada subcadena, entre otras EOF, lo que me lleva a la pregunta para poder depurar más por qué no se reconoce EOF en la salida. Necesito saber qué puedo "esperar" después de la finalización del proceso para poder esperar a que finalice. No puedo simplemente esperar el proceso porque el pexpectmódulo oculta funciones sin bloqueo para eso.

El pexpectmódulo (verhttp://www.bx.psu.edu/~nate/pexpect/pexpect.html#pexpect.spawn.expectpara más detalles) envuelve la recepción de EOF en la llamada al sistema de lectura en un tipo (pato) y la hace utilizable en pexpect.expect(una encapsulación de posible salida/retroalimentación de un proceso).

Me he estado preguntando eso porque lsse espera que algunos procesos terminen con EOF, es decir, el pexpectsentido de EOF (ejemplo enhttp://pexpect.sourceforge.net/pexpect.html).

Respuesta1

En lugar de ejecutar este shutdown -h 0comando, sugeriría ejecutarlo halto ejecutarlo desde el host lxc-shutdown -n <name>.

Fuente:9.5 Monitoreo y cierre de contenedores

Respuesta2

EOF indica que no se esperan más entradas sobre un recurso que posiblemente proporcione una cantidad infinita de datos (por ejemplo, una secuencia). Esta situación a menudo se expresa escribiendo un solo carácter en la secuencia (que será definido por el sistema subyacente (probablemente un sistema operativo o un entorno de ejecución)).

Como los procesos utilizan flujos para la comunicación entre procesos, necesitan indicar los límites de su salida y los procesos de envío deben indicar los límites de su entrada utilizando EOF. Es muy seguro que el sistema subyacente enviará esta entrada y salida a sus propios mecanismos de manejo de procesos, haciendo que EOF esté disponible para su evaluación en el programa/en el sistema.

Nota sobre pexpectel caso de uso en la pregunta: shutil.pexpectno parece adecuado para copiar archivos de un lxccontenedor. Se atascó y el desplazamiento de tiempo de la pexpectsalida causa confusión.

información relacionada