CTRL-BREAK 후에 PowerShell을 열린 상태로 유지


10

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


이 장고 윈도우의 기본값은 여러 가지 이유로 끔찍합니다 (많은 랩탑과 내장 가상 키보드에는 브레이크 키가 없다는 사실과 같습니다). 해결 방법을 찾을 수 있기를 바랍니다.
Mortoc

파이썬은 종종 프로세스를 종료 / 중지하기 위해해야 ​​할 일에 놓여 있습니다. 그러나 다른 CTRL- <옵션>을 사용해 볼 수 있습니다. 예 : CTRL-C / Z / D
not2qubit

@ user1147688 ctrl + break는 Windows에서 파이썬 인터프리터를 즉시 죽이고 ctrl + c는 잡거나 무시할 수 있습니다.
Johnth

답변:


3

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

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

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


1

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.