Ich arbeite mit Python Django in Windows Vista Powershell. Nachdem ich ausgeführt habe python manage.py runserver
, werde ich aufgefordert CTRL-BREAK
, den Vorgang zu stoppen. Aber nachdem ich das eingegeben habe, stoppt Powershell den Prozess und schließt. Gibt es eine Möglichkeit, den Prozess zu stoppen und die Powershell offen zu halten?
powershell
GTyler
quelle
quelle
Antworten:
Leider beendet der PowerShell-Konsolenhost
Ctrl+C
einen laufenden Vorgang undCtrl+Break
beendet den Vorgang UND schließt die Hostsitzung. Es ist meiner Meinung nach eine sehr unglückliche Wahl, aber sie ist da und wir können damit leben.Ich finde es am einfachsten, wenn ich auf Situationen wie diese stoße, die aus der PowerShell-Sitzung stammen und einfach
cmd
über die PowerShell-Eingabeaufforderung ausgeführt werden. Jetzt umgehe ich PowerShell vorübergehend und kehre nach Abschluss problemlos zu meiner PowerShell-Sitzung zurück.Die andere Sache, die Sie wahrscheinlich in Betracht ziehen sollten, ist die Verwendung von cmd.exe anstelle von PowerShell, es sei denn, es gibt eine Funktion von PowerShell, die Sie nutzen möchten.
quelle
Sie können es folgendermaßen versuchen:
Ihre Powershell startet Ihr Python-Programm in einem Job
Trap Ctrl-C durch den Powershell-Hauptprozess
Wenn Strg-C abgefangen ist, stoppen Sie den in Schritt 1 gestarteten Job
Dann können Sie Ihr Powershell-Skript fortsetzen
Verwenden Sie den Startjob, um einen Hintergrundjob zu starten
$ killMe = start-job -scriptblock {& python manage.py}
Um Strg-C abzufangen, weisen Sie Ihre Konsole an, Strg-C als Eingabe zu behandeln. Überprüfen Sie dies über MSTN .
[Konsole] :: TreatControlCAsInput = $ true
Führen Sie dann eine UI-Schleife aus, um die Tasteneingabe zu überprüfen:
Um den Job zu stoppen, wenn "Strg-C" gedrückt wird,
stop-job -job $ killMe
Das Leben wird jedoch nicht einfach, wenn Sie mit Ihrem Python-Server interagieren müssen, der im Hintergrund ausgeführt wird. Und Sie möchten wahrscheinlich die Ausgabe Ihres Servers ständig anzeigen.
quelle