CTRL-BREAK Sonrası PowerShell'i Açık Tutma


10

Windows Vista Powershell'de Python Django ile çalışıyorum. Koştuktan sonra , süreci durdurmamı python manage.py runserveristiyor CTRL-BREAK. Ama bunu yazdıktan sonra, Powershell işlemi durdurur ve kapanır. Süreci durdurmanın ve Powershell'i açık tutmanın bir yolu var mı?


Bu django-windows varsayılanı birçok nedenden dolayı korkunçtur (birçok dizüstü bilgisayarın ve hatta yerleşik sanal klavyenin bir kesme tuşuna sahip olmaması gibi). Keşke bir çözüm bulabilseydim.
Mortoc

Python genellikle bir işlemden çıkmak / durdurmak için ne yapılacağı konusunda yatar. Ancak diğer CTRL- <seçenekler> 'i deneyebilirsiniz. Örneğin: CTRL-C / Z / D
not2qubit

@ user1147688 ctrl + break, ctrl + c yakalanabilir veya yok sayılabilirken, python yorumlayıcısını pencerelerde anında öldürür.
Smit Johnth

Yanıtlar:


3

Ne yazık ki PowerShell konsolu ana bilgisayarı Ctrl+Cdevam eden bir işlemi sonlandırmak için kullanır ve işlemi Ctrl+Breaksonlandırır VE ana bilgisayar oturumunu kapatır. En talihsiz bir seçim IMHO ama orada ve onunla yaşayacağız.

Bu gibi durumlarda çalıştırdığımda yapılacak en kolay şey, PowerShell oturumundan sadece cmdPowerShell isteminden yürütülür . Şimdi aslında PowerShell'i geçici olarak atlıyorum ve bittiğinde kolayca PowerShell oturumuma geri dönüyorum.

Göz önünde bulundurmaya çalıştığınız PowerShell'in bir özelliği yoksa, muhtemelen göz önünde bulundurmanız gereken diğer bir şey PowerShell yerine cmd.exe kullanmaktır.


1

Bu şekilde deneyebilirsiniz:

  1. Powershell'iniz bir işte python programınızı başlatır

  2. PowerShell ana işlemiyle Ctrl-C'yi yakalayın

  3. Ctrl-C sıkıştığında, 1. adımda başlatılan işi durdurun

Ardından, powershell betiğinizin devam etmesini sağlayabilirsiniz

  1. Bir arka plan işi başlatmak için başlangıç ​​işini kullanın

    $ killMe = başlangıç ​​işi -scriptblock {& python manage.py}

  2. Ctrl-C'yi yakalamak için konsolunuza Ctrl-C'yi giriş olarak işlemesini söyleyin , bunu MSTN'den kontrol edin .

    [console] :: TreatControlCAsInput = $ true

Ardından tuş girişini kontrol etmek için bir UI döngüsü çalıştırın:

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. "Ctrl-C" tuşuna basıldığında işi durdurmak için,

    stop-job -job $ öldürmekMe

Ancak, arka planda çalışan python sunucunuzla etkileşime girmeniz gerekiyorsa hayat kolay olmayacaktır. Muhtemelen sunucunuzun çıktısını sürekli olarak görüntülemek istersiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.