Pracuję z Python Django w Windows Vista Powershell. Po uruchomieniu python manage.py runserver
prosi mnie CTRL-BREAK
o zatrzymanie procesu. Ale po tym, jak to napisałem, Powershell zatrzymuje proces i zamyka. Czy istnieje sposób na zatrzymanie procesu i utrzymanie otwartej Powershell?
powershell
Zaniepokojony obywatel
źródło
źródło
Odpowiedzi:
Niestety host konsoli PowerShell używa
Ctrl+C
do zakończenia trwającej operacji iCtrl+Break
kończy operację ORAZ zamyka sesję hosta. To najbardziej niefortunny wybór IMHO, ale jest i możemy z tym żyć.Uważam, że najłatwiejszą rzeczą do zrobienia, gdy napotykam takie sytuacje, jest sesja PowerShell, po prostu uruchom ją
cmd
z wiersza polecenia PowerShell. Teraz faktycznie omijam tymczasowo PowerShell i po zakończeniu łatwo wracam do sesji PowerShell.Inną rzeczą, którą powinieneś prawdopodobnie rozważyć, jest użycie cmd.exe zamiast PowerShell, chyba że próbujesz wykorzystać jakąś funkcję PowerShell.
źródło
Możesz spróbować w ten sposób:
Twój PowerShell uruchamia program Python w zadaniu
Trap Ctrl-C przez główny proces PowerShell
Gdy Ctrl-C jest uwięziony, zatrzymaj zadanie uruchomione w kroku 1
Następnie możesz kontynuować działanie skryptu PowerShell
Aby uruchomić zadanie w tle, użyj polecenia start-job
$ killMe = start-job -scriptblock {& python manage.py}
Aby przechwycić Ctrl-C, powiedz konsoli, aby traktowała Ctrl-C jako dane wejściowe, sprawdź to w MSTN .
[konsola] :: TreatControlCAsInput = $ true
Następnie uruchom pętlę interfejsu użytkownika do sprawdzania danych wejściowych kluczy:
Aby zatrzymać zadanie po naciśnięciu klawisza „Ctrl-C”,
stop-job -job $ killMe
Jednak życie nie będzie łatwe, jeśli zajdzie potrzeba interakcji z serwerem python, który działa w tle. Prawdopodobnie chcesz stale wyświetlać dane wyjściowe serwera.
źródło