按 CTRL-BREAK 后保持 PowerShell 处于打开状态

按 CTRL-BREAK 后保持 PowerShell 处于打开状态

我在 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

你可以按照这个方法尝试一下:

  1. 你的 powershell 在作业中启动你的 python 程序

  2. 通过 powershell 主进程捕获 Ctrl-C

  3. 当 Ctrl-C 被捕获时,停止步骤 1 中启动的作业

然后你可以让你的 powershell 脚本继续运行

  1. 要启动后台作业,请使用开始工作

    $killMe = start-job -scriptblock {&python manage.py}

  2. 要捕获 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
    }
  }
}
:
  1. 要在按下“Ctrl-C”时停止作业,

    停止作业-作业$killMe

然而,如果你需要与在后台运行的 Python 服务器交互,生活就不那么容易了。而且你可能想不断地显示服务器的输出。

相关内容