Estou trabalhando com o Python Django no Windows Vista Powershell. Depois de executar python manage.py runserver
, ele me pede CTRL-BREAK
para interromper o processo. Mas depois que eu digitei isso, o Powershell interrompe o processo e fecha. Existe uma maneira de parar o processo e manter o PowerShell aberto?
powershell
GTyler
fonte
fonte
Respostas:
Infelizmente, o host do console do PowerShell usa
Ctrl+C
para finalizar uma operação em andamento eCtrl+Break
finaliza a operação E fecha a sessão do host. É uma escolha muito infeliz, IMHO, mas está lá e podemos conviver com ela.Acho que a coisa mais fácil de fazer quando me deparo com situações como esta é da sessão do PowerShell, basta executar
cmd
no prompt do PowerShell. Agora, estou ignorando o PowerShell temporariamente e volto facilmente à minha sessão do PowerShell quando terminar.A outra coisa que você provavelmente deve considerar é usar o cmd.exe em vez do PowerShell, a menos que haja algum recurso do PowerShell que você esteja tentando aproveitar.
fonte
Você pode tentar desta maneira:
Seu PowerShell lança seu programa Python em um trabalho
Prenda Ctrl-C pelo processo principal do PowerShell
Quando Ctrl-C estiver interceptado, pare o trabalho iniciado na etapa 1
Em seguida, você pode manter o script do PowerShell continuando
Para iniciar um trabalho em segundo plano, use start-job
$ killMe = start-job -scriptblock {& python manage.py}
Para interceptar o Ctrl-C, diga ao seu console para tratar o Ctrl-C como uma entrada, verifique isso no MSTN .
[console] :: TreatControlCAsInput = $ true
Em seguida, execute um loop da interface do usuário para verificar a entrada de chaves:
Para interromper o trabalho quando pressionar "Ctrl-C",
stop-job -job $ killMe
No entanto, a vida não será fácil se você precisar interagir com o servidor python, que está sendo executado em segundo plano. E você provavelmente gostaria de exibir a saída do seu servidor constantemente.
fonte