Todos os processos do Linux gravam EOF no stdout quando estão encerrando/terminaram a finalização?

Todos os processos do Linux gravam EOF no stdout quando estão encerrando/terminaram a finalização?

Estou tendo problemas para enviar shutdown -h 0para um lxccontêiner Debian (ou seja, executar este comando no lxc) com o pexpectmódulo python (em um script python). Neste módulo o usuário pode "esperar" (= aguardar a saída do processo) uma determinada substring, entre outras EOF, o que me leva à questão para poder depurar ainda mais porque o EOF não é reconhecido na saída. Preciso saber o que posso "esperar" após o encerramento do processo para aguardar o término do processo. Não posso simplesmente esperar pelo processo porque o pexpectmódulo oculta funções sem bloqueio para isso.

O pexpectmódulo (verhttp://www.bx.psu.edu/~nate/pexpect/pexpect.html#pexpect.spawn.expectpara detalhes) envolve a recepção de EOF na chamada de sistema de leitura em um tipo (duck) e o torna utilizável em pexpect.expect(um encapsulamento de possível saída/feedback de um processo).

Fiquei me perguntando isso porque lsse espera que alguns processos como sejam finalizados com EOF, ou seja, o pexpectsentido de EOF (exemplo emhttp://pexpect.sourceforge.net/pexpect.html).

Responder1

Em vez de executar este shutdown -h 0comando, sugiro executar haltou executar este comando no host, lxc-shutdown -n <name>.

Fonte:9.5 Monitorando e desligando contêineres

Responder2

EOF indica que nenhuma entrada adicional é esperada em um recurso que possivelmente fornece uma quantidade infinita de dados (por exemplo, um fluxo). Esta situação é frequentemente expressa escrevendo um único caractere no fluxo (a ser definido pelo sistema subjacente (provavelmente um sistema operacional ou ambiente de tempo de execução)).

Como os processos utilizam fluxos para comunicação entre processos, eles precisam indicar os limites de sua saída e os processos de envio precisam indicar os limites de sua entrada usando EOF. O sistema subjacente irá certamente encaminhar esta entrada e saída para os seus próprios mecanismos de tratamento de processos, disponibilizando o EOF para avaliação no programa/no sistema.

Nota sobre pexpecto caso de uso na pergunta: shutil.pexpectnão parece adequado para copiar arquivos de um lxccontêiner. Ele travou e o deslocamento de tempo da pexpectsaída causa confusão.

informação relacionada