我在 Windows Vista Powershell 中使用 Python Django。运行后python manage.py runserver
,它要求我CTRL-BREAK
停止该进程。但在我输入该命令后,Powershell 停止并关闭了该进程。有没有办法停止该进程并保持 Powershell 打开?
答案1
不幸的是,PowerShell 控制台主机用于Ctrl+C
终止正在进行的操作,并Ctrl+Break
终止操作并关闭主机会话。在我看来,这是一个最不幸的选择,但它就在那里,我们不得不忍受它。
我发现遇到这种情况时最简单的做法是从 PowerShell 会话中简单地cmd
从 PowerShell 提示符执行。现在我实际上是暂时绕过了 PowerShell,完成后我可以轻松返回到我的 PowerShell 会话。
你可能还应该考虑使用命令执行程序而不是 PowerShell,除非您尝试利用 PowerShell 的某些功能。
答案2
你可以按照这个方法尝试一下:
你的 powershell 在作业中启动你的 python 程序
通过 powershell 主进程捕获 Ctrl-C
当 Ctrl-C 被捕获时,停止步骤 1 中启动的作业
然后你可以让你的 powershell 脚本继续运行
要启动后台作业,请使用开始工作
$killMe = start-job -scriptblock {&python manage.py}
要捕获 Ctrl-C,请告诉您的控制台将 Ctrl-C 视为输入,请检查来自 MSTN。
[控制台]::TreatControlCAsInput = $true
然后运行 UI 循环来检查按键输入:
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
}
}
}
:
要在按下“Ctrl-C”时停止作业,
停止作业-作业$killMe
然而,如果你需要与在后台运行的 Python 服务器交互,生活就不那么容易了。而且你可能想不断地显示服务器的输出。