Ctrl + C를 누를 때 명령이 중지되지 않도록 방지


28

그래서 나는 Zork 1을 연주하고 있었고 친구를 보여주기 위해 텍스트를 복사했지만 CTRL+를 누를 때 실수로 Shift 키를 누르는 것을 잊었습니다 C. 이것은 명령을 멈추고 Zork 데이터를 잃어 버렸습니다 ...

내가 명령을 눌러 키 정지 방지하기 위해 사용할 수있는 자신의 밖으로 "도움"팁의 어떤 종류가 있습니까 CTRL+는 C?

Zork은 터미널 내부에서 실행됩니다. 다양한 동작을 수행하는 명령을 제공하는 터미널 기반 게임입니다.


따라서 Ctrl + c를 사용하여 모든 응용 프로그램을 완전히 종료하지 못하게 하시겠습니까? 그래도 미래에는 재앙이 될 수 있습니다.
jobin 2018

답변:


30

키 조합 Ctrl+ C는 문자를 전송합니다 ^C(바이트 값 3). 이것은 단말기가 SIGINT 신호를 포 그라운드에서 실행중인 프로그램 에 전송하게합니다 ¹ . 이 신호에 대한 일반적인 조치는 현재 명령을 중단하는 것입니다. 연속 명령을 처리하도록 설계된 프로그램은 최상위 프롬프트로 돌아가고 단일 배치 명령 또는 연속 상호 작용 종료로 설계된 프로그램은 다시 시작됩니다. 분명히 사용중인 프로그램은 두 번째 모델에 따라 설계되었습니다.

이 신호 전송 키는 모든 터미널 에뮬레이터와 실제 물리적 터미널이 공유하는 커널의 일반 터미널 인터페이스 기능입니다. 명령을 사용하여이 키를 전송하는 키와 다른 키 (주로 포 그라운드 프로그램을 일시 중단하기 위해 SIGSTOPCtrlZ전송) 를 구성 할 수 있습니다 . SIGINT의 키를 +로 전환하려면 (현재 터미널에서) :sttyCtrl_

stty intr '^_'

완전히 비활성화하려면 :

stty intr ''

모든 설정을 기본값으로 재설정하려면

stty sane

키는 임의의 키 조합이 될 수 없으며 단일 바이트 값이어야합니다. stty일부 프로그램 (특히 전체 화면 텍스트 모드 프로그램이) 자신의 키보드 단축키 처리를 할 - 설정은 프로그램에 의해 오버라이드 (override) 할 수 있습니다.

¹ 보다 정확하게 는 터미널이 제어 터미널 인 포 그라운드 프로세스 그룹 의 모든 프로세스에 적용 됩니다.


32

CTRL+ C는 인터럽트 신호 ( SIGINT신호 번호 2)를 포 그라운드의 작업으로 보냅니다 . trap '' 2Zork를 시작하기 전에 명령을 사용하여 신호를 "트래핑"하여이를 비활성화 할 수 있습니다 .

으로 CTRL+ C(unrap SIGINT)를 다시 활성화 하십시오 trap 2.

: 다음과 같은 것을 추가 할 수 있습니다 ~/.bashrc.

alias zork="(trap '' 2 && cd ~/path/to/zork/ && frotz ZORK1.DAT)"

이렇게하면 신호를 비활성화하고 다시 활성화하는 것을 잊지 않으며 입력하기 만하면 게임을 쉽게 시작할 수 있습니다 zork 터미널에 .

참고 : 신호 이름이 더 편리한 경우 숫자 대신 신호 이름을 사용할 수 있습니다 (예 : trap '' sigint또는) trap '' int. 예를 들어 숫자 등을 사용하는 데 익숙합니다 kill -9.

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