Mantendo o PowerShell aberto após CTRL-BREAK

10

Estou trabalhando com o Python Django no Windows Vista Powershell. Depois que eu corro python manage.py runserver , ele me pede para CTRL-BREAK parar o processo. Mas depois que eu digitei isso, Powershell pára o processo e fecha. Existe uma maneira de parar o processo e manter o Powershell aberto?

    
por GTyler 13.02.2013 / 02:38

2 respostas

3

Infelizmente, o host do console do PowerShell usa Ctrl+C para encerrar uma operação em andamento e Ctrl+Break encerra a operação E fecha a sessão do host. É uma escolha muito infeliz IMHO mas está lá e nós conseguimos viver com isso.

Acho que a coisa mais fácil de fazer quando me deparo com situações como essa é na sessão do PowerShell, basta executar cmd no prompt do PowerShell. Agora estou ignorando o PowerShell temporariamente e estou de volta à minha sessão do PowerShell quando terminar.

A outra coisa que você provavelmente deve considerar é usar cmd.exe em vez do PowerShell, a menos que haja algum recurso do PowerShell que você esteja tentando aproveitar.

    
por 05.11.2013 / 16:11
1

Você pode tentar da seguinte maneira:

  1. Seu powershell lança seu programa python em um trabalho

  2. Armadilha Ctrl-C pelo processo principal do PowerShell

  3. Quando o Ctrl-C estiver preso, pare o trabalho iniciado no passo 1

Em seguida, você pode manter seu script do PowerShell continuando

  1. Para iniciar um trabalho em segundo plano, use o start-job

    $ killMe = start-job -scriptblock {& python manage.py}

  2. Para interceptar Ctrl-C, diga ao seu console para tratar Ctrl-C como uma entrada, marque isso do MSTN .

    [console] :: TreatControlCAsInput = $ true

Em seguida, execute um loop de interface do usuário para verificar a entrada de chaves:

while ($true) {

  write-host "Processing..."
  if ([console]::KeyAvailable) {

    $key = [system.console]::readkey($true)
    if (($key.modifiers -band [consolemodifiers]"control") -and
      ($key.key -eq "C")) {

      :
      break
    }
  }
}
:
  1. Para parar o trabalho quando o "Ctrl-C" é atingido,

    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.

    
por 07.02.2014 / 09:25

Tags