Powershell에서 Python을 종료하기 위한 Ctrl-C가 작동하지 않습니다.
Python은 Powershell/Command Prompt에서 Ctrl-C를 사용할 때 종료되지 않고 대신 "키보드"를 제공합니다.인터럽트" 문자열입니다.
최근에 Windows 10을 다시 설치했습니다.다시 설치하기 전에 Ctrl-C가 python(3.5/2.7)을 종료하고 출력이 없습니다.
왜 이런 일이 벌어졌는지 아는 사람?단순한 설정인가요?
제가 생각할 수 있는 유일한 차이점은 제가 지금 파이썬 3.6에 있다는 것입니다.Ctrl-D는 Windows의 Ubuntu에서 Bash에서 작동하고 Ctrl-C는 활성화된 아나콘다 python2 환경에서 작동하여 python을 종료합니다.
윈도우 10 프로 빌드 18363 파이썬 3.8.1 버전.몇 가지 파이썬 스크립트를 실행하고 있었는데 몇 가지를 중단할 수 없었습니다.CTRL + C
,그렇지만CTRL + BREAK
매번 일했습니다.Windows Docs에는 다음과 같은 내용이 있습니다.
Ctrl+C 및 Ctrl+BREAK 키 조합은 콘솔 프로세스에 의해 특수 처리됩니다.기본적으로 콘솔 창에 키보드 포커스가 있는 경우 Ctrl+C 또는 Ctrl+Break은 키보드 입력이 아닌 신호(SIGINT 또는 SIGBREAK)로 처리됩니다.
CTRL+BREAK는 항상 신호로 처리되지만 응용 프로그램은 다음 두 가지 방법으로 기본 CTRL+C 동작을 변경하여 핸들러 함수가 호출되지 않도록 할 수 있습니다.
- 콘솔 모드 설정 기능은 ENABLE_PROCESSED_를 비활성화할 수 있습니다.콘솔의 입력 버퍼에 대한 입력 입력 모드이므로 Ctrl+C는 신호가 아닌 키보드 입력으로 보고됩니다.
- SetConsoleCtrlHandler가 매개 변수에 NULL 및 TRUE 값을 사용하여 호출되면 호출 프로세스는 Ctrl+C 신호를 무시합니다.NULL 및 FALSE 값을 사용하여 SetConsoleCtrlHandler를 호출하면 정상적인 CTRL+C 처리가 복원됩니다.CTRL+C 신호를 무시하거나 무시하지 않는 이 특성은 하위 프로세스에서 상속되지만 기존 프로세스에 영향을 주지 않고 모든 프로세스에서 사용하거나 사용하지 않도록 설정할 수 있습니다.
따라서,CTRL + C
SIGINT로 보이며 실행 중인 프로그램에 의해 동작이 수정될 수 있습니다.윈도우의 파이썬은 다음과 같은 방식으로 코드화된 것으로 보입니다.CTRL + C
우리가 기대하는 SIGINT가 아닌 키보드 입력으로 처리되고 있습니다.다행스럽게도 나는 그것을 가지고 있습니다.CTRL + BREAK
키보드의 키를 누르면 항상 작동합니다.
없는 분들을 위해서.BREAK
키보드에서 Windows On Screen 가상 키보드를 사용할 수 있습니다.
- 를 누릅니다.
win key + r
응용 프로그램 실행 프로그램을 엽니다. - 형
osk
확인을 누릅니다. - 에서 가상키에를다누니릅서드를 누릅니다.
ctrl + ScrLk
그리고 이것은 프로그램을 죽일 것입니다.
이 스택 스레드에는 다음과 같은 경우 시도할 수 있는 몇 가지 다른 방법이 있습니다.ctrl + ScrLk
가상 키보드에서 작동하지 않습니다.
입력할 수 있습니다.
CTRL + Z,
그런 다음 ENTER를 눌러 powershell에서 python을 종료합니다.
최근 Windows 10 Insider 빌드 15002에 나타난 버그입니다.
해결 방법은 매핑된 키를 Ctrl C에서 Ctrl K와 같은 키로 변경하는 것입니다.
이 방법에 , 이 방법을 볼 수 .stty -a
Terminate를 Ctrl + K에 매핑할 각 bash 세션에서 이 명령을 실행할 수 있습니다.
stty intr \^k
TEMP 솔루션으로 이를 Bashrc에 포함하여 각 새 세션에서 실행할 수 있습니다.
이 버그는 Github #1569에서 이미 보고되었습니다.
제 경우, 오른쪽 ctrl + c가 aconda3 파워셸에서 트릭을 수행하므로 재매핑이 필요하지 않습니다. Windows 10에 있습니다.
그것은 마법처럼 작동했습니다.
Fn 키가 있는 랩톱이 있으면 다음을 누릅니다.
Ctrl + Fn + S
출처: https://www.dell.com/community/Laptops-General-Read-Only/break-key-alternative/td-p/3826467
C를 , 롤를누 C면르트컨,KeyboardInterrupt
예외가 발생했습니다.코드를 중지하지 않는 경우 가장 좋은 방법은 다음을 추가하는 것입니다.try
당신의 코드에 대한 진술이 포착됩니다.KeyboardInterrupt
try:
....
except KeyboardInterrupt:
exit()
코드가 갑자기 생각이 안 나서 뭔가 잘못됐다면 미안해요.
편집::Ctrl Break
에서는 는또일키에서드보부▁or.Ctrl Pause
파이썬 코드를 즉시 중지합니다.
키보드의 상단 모서리에 있는 Esc 버튼을 누르는 것은 Windows-7에서 작동하는 것처럼 보입니다. Python 3.+ 무한을 깨뜨렸습니다...대화형 스크립트의 잘못된 구문에 대해
제가 Ctrl-C를 눌렀을 때, python은 출력 없이 정상적으로 종료되었습니다.
언제 수 이 안 나요.Ctrl + C
내 기억 속에서,Ctrl + C
항상 나에게 주는KeyboardInterrupt
.
나는 또한 그 이유를 설명하는 답을 찾을 수 없었습니다.Ctrl + C
파이썬을 쉘에서 그만둘 수 없습니다.참고로,Ctrl + D
그리고.Ctrl + \
여러 가지 이유로 python을 종료할 수 있습니다.여기서 @Gilles의 답변을 참조하십시오.https://superuser.com/questions/169051/whats-the-difference-between-c-and-d-for-unix-mac-os-x-terminal
하지만 어떻게 대처해야 할지 생각합니다.Ctrl + C
단지 프로그램의 결정일 뿐입니다.네, 프로그램에서 어떻게 처리할지에 따라 완전히 달라지는 것 같습니다.제가 아래에 쓰는 예를 참조하세요.
test.c
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
static void ctrlC_Handler(int sig){
if(sig == SIGINT){
printf("(:KeyboardInterrupt:)\n");
printf(">>>");
signal(SIGINT, ctrlC_Handler);
}
}
static void welcome(){
printf("Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)\n");
printf("[GCC 7.3.0] on linux2\n");
printf("Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n");
printf(">>>");
fflush(stdout);
}
int main(){
welcome();
signal(SIGINT, ctrlC_Handler);
for(;;){
pause();
}
return 0;
}
로 그것을 정리합니다.gcc test.c
실행합니다../a.out
눌러 보십시오.Ctrl + C
적어도 당신이 입력할 때 파이썬 프로그램의 동작(출력)을 모방하는 것을 볼 수 있습니다.Ctrl + C
.
그래서, 제 생각에는, 그것은 특별한 것이 아니라, 그것을 어떻게 다룰 것인가에 대한 인간/프로그래머/저자의 결정일 뿐입니다.
언급URL : https://stackoverflow.com/questions/42039231/ctrl-c-for-quitting-python-in-powershell-now-not-working
'programing' 카테고리의 다른 글
마리아 사용에 필수적인 도구DB (0) | 2023.08.28 |
---|---|
위치를 모니터링하고 있습니다.XHR 앱의 기록에 대한 솔루션을 해시하시겠습니까? (0) | 2023.08.28 |
PHP 컴파일 오류: "배열에서 빈 배열 요소를 사용할 수 없습니다." (0) | 2023.08.28 |
node.js 대 ASP의 예기치 않은 결과입니다.NET Core 성능 테스트 (0) | 2023.08.23 |
CSS 배경 이미지를 어둡게 합니까? (0) | 2023.08.23 |