Eu escrevi um programa em Python que imprime alguma mensagem. Quero que este programa vá para segundo plano e imprima sua mensagem em um arquivo. Então escrevi no bash: python program > message &
. Problema: a mensagem aparece (com cat ou vi) somente quando interrompo o programa. Alguém poderia me explicar onde está o problema e se existe uma solução fácil?
Responder1
Python está usando buffer completo quando sua saída não é um tty.
Execute seu programa com python -u
- o que tornará o stdout e o stderr sem buffer em python3, e também o stdin em python2.
Observe que isso não tem nada a ver com o programa sendo executado em segundo plano, mas com o fato de que seu stdout não é um tty.
Responder2
Flush poderia ajudá-lo aqui? Espero que links para outros sites não sejam um problema. verhttps://stackoverflow.com/questions/230751/how-to-flush-output-of-print-function