CTRL-BREAK 후에 PowerShell을 열린 상태로 유지 사용하고 있습니다. 내가

Windows Vista Powershell에서 Python Django를 사용하고 있습니다. 내가 실행 한 후 프로세스를 중지 python manage.py runserver하도록 요청 CTRL-BREAK합니다. 그러나 그것을 입력 한 후 Powershell은 프로세스를 중지하고 닫습니다. 프로세스를 중지하고 Powershell을 열어 둘 수있는 방법이 있습니까?



답변

불행히도 PowerShell 콘솔 호스트는 Ctrl+C진행중인 작업을 Ctrl+Break종료하고 작업을 종료하고 호스트 세션을 닫습니다. 가장 불행한 선택 IMHO이지만 거기에 있으며 우리는 함께 살아갑니다.

이와 같은 상황이 발생할 때 가장 쉬운 방법은 PowerShell 세션 cmd에서 PowerShell 프롬프트에서 실행 하는 것입니다. 이제 실제로 PowerShell을 일시적으로 무시하고 완료되면 쉽게 PowerShell 세션으로 돌아갑니다.

고려해야 할 또 다른 사항은 활용하려는 PowerShell의 기능이 없으면 PowerShell 대신 cmd.exe를 사용 하는 것입니다.


답변

이 방법으로 시도해 볼 수 있습니다.

  1. Powershell이 ​​직장에서 파이썬 프로그램을 시작합니다.

  2. Powershell 기본 프로세스로 Ctrl-C 트랩

  3. Ctrl-C가 갇 히면 1 단계에서 시작한 작업을 중지하십시오.

그런 다음 powershell 스크립트를 계속 유지할 수 있습니다

  1. 백그라운드 작업을 시작하려면 start-job을 사용하십시오.

    $ 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 서버와 상호 작용 해야하는 경우 인생은 쉽지 않습니다. 그리고 서버의 출력을 지속적으로 표시하고 싶을 것입니다.