Я работаю с Python Django в Windows Vista Powershell. После того, как я бегу python manage.py runserver
, он просит меня CTRL-BREAK
остановить процесс. Но после того, как я напечатал это, Powershell останавливает процесс и закрывается. Есть ли способ остановить процесс и оставить Powershell открытым?
powershell
Concerned_Citizen
источник
источник
Ответы:
К сожалению, хост консоли PowerShell использует
Ctrl+C
для завершения текущей операции иCtrl+Break
завершения операции И закрывает сеанс хоста. Это самый неудачный выбор, ИМХО, но он есть, и мы должны с этим жить.Я считаю, что самое простое, что можно сделать, когда я сталкиваюсь с подобными ситуациями, из сеанса PowerShell - просто выполнить
cmd
из командной строки PowerShell. Теперь я фактически временно обхожу PowerShell и легко возвращаюсь к своему сеансу PowerShell после завершения.Другая вещь, которую вы, вероятно, должны рассмотреть, это использовать cmd.exe, а не PowerShell, если только вы не пытаетесь использовать какую-то особенность PowerShell.
источник
Вы можете попробовать это следующим образом:
Ваш PowerShell запускает вашу программу Python в работе
Ловушка Ctrl-C основным процессом powershell
Когда Ctrl-C захвачен, остановите задание, запущенное на шаге 1
Затем вы можете продолжить выполнение сценария PowerShell.
Чтобы запустить фоновое задание, используйте start-job
$ killMe = start-job -scriptblock {& python manage.py}
Чтобы перехватить Ctrl-C, попросите консоль обрабатывать Ctrl-C как ввод, проверьте это из MSTN .
[console] :: TreatControlCAsInput = $ true
Затем запустите цикл пользовательского интерфейса для проверки ввода ключей:
Чтобы остановить работу, когда нажата клавиша «Ctrl-C»,
stop-job -job $ killMe
Однако жизнь не будет легкой, если вам нужно взаимодействовать с вашим сервером Python, который работает в фоновом режиме. И вы, вероятно, хотели бы постоянно отображать вывод вашего сервера.
источник