Script do Python 2.7 usando curses sendo automaticamente em segundo plano quando halfdelay ou cbreak é chamado

0

Atualmente estou trabalhando na modernização (foi feita no Trusty 14.04, modernizando para o Bionic 18.04) um script python que usa curses para criar um menu para um usuário. Durante o lançamento inicial do script antes que a interface do usuário real seja exibida, há uma linha:

curses.halfdelay(10)

(A documentação deste comando pode ser encontrada aqui ) Esta linha é precedida por um curses.initscr ( ) então deve haver um terminal válido para receber entrada de. O problema é que essa linha exata faz com que o script seja backgroundeado e você tem que fg o processo para continuar a execução. Após o fg, o atraso especificado no halfdelay ocorrerá e, em seguida, o script continuará normalmente, o que sugere que o segundo plano ocorra antes de realmente aguardar por qualquer caractere. Para referência, o script funciona perfeitamente no Ubuntu 14.04, então estou inclinado a dizer que é um problema devido a uma mudança na maneira como o getty funciona ou uma mudança no comportamento do upstart para o systemd. Eu descobri que substituindo a linha halfdelay com curses.cbreak () também faz com que seja backgrounded. Como o halfdelay faz com que o terminal mude para o modo cbreak, isso sugere que isso é o que está causando o problema. Eu não consegui encontrar ninguém on-line tendo um problema parecido com remotamente, então qualquer ajuda seria apreciada.

Obrigado!

    
por user1487162 06.06.2018 / 17:40

1 resposta

0

O problema era que curses estava tentando sequestrar o tty1 (que já estava em uso) e, portanto, para evitar que o terminal atual fosse seqüestrado, o sistema operacional o problema

    
por user1487162 06.06.2018 / 21:01