나는 답변을 찾고 있지만 지금까지 내 질문에 대한 답변을 찾지 못했습니다. 현재 Ubuntu 서버에 로그인되어 있으며 프로세스가 실행되는 동안에는 인터럽트가 실행되지 않습니다. 이것은 내 stty -a입니다.
user@Ubuntu1:~$ stty -a
speed 38400 baud; rows 93; columns 200; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
내 .bashrc에는 인터럽트를 변경할 항목이 없습니다.
이는 루트를 포함한 모든 사용자에게 동일합니다. 또한 다른 터미널을 사용하여 다른 위치에서 로그인을 시도했지만 매번 동일한 결과가 나왔습니다. ssh와 ssh -X를 사용하여 로그인했습니다.
편집: 로컬에서는 모든 인터럽트가 정상적으로 작동합니다.
업데이트: 아직 답변을 찾고 있습니다. 내 친구도 같은 문제가 있습니다. 문제는 심각한 것 같습니다. 로그인할 때(PC, Mac, Linux에서) 키보드가 이러한 키를 인식하지 못합니다(매핑이 정확함에도 불구하고).
답변1
ctrl+ c프로그램을 종료하지 마십시오.
그것은 그런 일이 아닙니다.
POSIX 표준은 실행 중인 프로그램을 제어하는 데 사용되는 신호 세트를 정의합니다.
First the signals described in the original POSIX.1-1990 standard.
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
SIGTERM 15 Term Termination signal
-http://man7.org/linux/man-pages/man7/signal.7.html
ctrl+ 터미널에서 실행하는 프로그램에 c"키보드 인터럽트" 신호를 보냅니다 .2
해당 신호를 처리하는 것은 전적으로 프로그램에 달려 있으며 원하는 것은 무엇이든 할 수 있습니다. 많은 스크립팅 언어 해석기는 기본적으로 호출된 스크립트를 종료하고 정상적으로 종료하여 이를 처리할 수 있습니다.
특히 자동 컨텍스트에서 프로그램을 종료하려면 kill
id(pid)로 프로세스에 신호를 보내는 데 사용할 수 있는 singal 15를 사용하는 것이 좋습니다.
kill -15 <pid>
내가 아는 한, 프로그램 자체는 여전히 이 신호를 수신하며 가능한 한 깔끔하게 종료되어야 합니다.
프로그램이 신호 15를 무시하고 프로그램이 여전히 존재하는 경우(그리고 권한 오류로 인해 신호 전송이 중단되지 않는 경우)
kill -9 <pid>
내가 아는 한, 신호 9는 커널(작업 관리자 및 하드웨어 인터페이스)에 의해 해석되고 커널이 갑자기 프로그램 처리를 중단하고 모든 리소스를 할당 해제/해제합니다.
답변2
다음은 몇 가지 하드코어 팁입니다.
Control-Z
프로세스를 일시 중지하고 프로세스의 작업 ID를 반환합니다.
그 다음에:
kill -9 %1
(1을 작업 ID로 바꾸세요).
참고: 백분율은 필수입니다! 그렇지 않으면 init 프로세스가 종료됩니다. 즉, 커널이 종료되고 전체 시스템이 충돌하게 됩니다(그러므로 중간에 공백을 넣지 마십시오 :)
답변3
내가 추측해야 한다면 아마도 터미널 설정에서 Ctrl"복사"에 +를 매핑 했기 때문일 것입니다. + + C로 변경하면 + 가 다시 제대로 작동하여 프로세스가 중지됩니다.CtrlShiftCCtrlC
답변4
나는 이것을 만났다이전 포럼 게시물이 특별한 질문에 관해서. 기본 인터럽트 시퀀스는 별도의 구성 파일에서 재정의될 수 있는 것으로 보입니다.
이 프로세스를 외부적으로 종료하려면 kill을 사용할 수 있지만 이 섹션에 설명된 대로 kill을 업그레이드해야 한다는 점에 유의하세요.프로세스 종료에 관한 기사, 가장 극단적인 킬 -9로 점프하는 대신.
위키피디아는 훌륭해요프로그램 리소스 종료. 여기 또 하나 있어요유닉스 신호 목록그리고 그들이 하는 일.