
그래서 저는 Zork 1을 플레이하고 친구에게 보여주기 위해 일부 텍스트를 복사하러 갔는데 실수로 CTRL+를 누를 때 Shift 키를 누르는 것을 잊어버렸습니다 C. 이로 인해 명령이 중지되었고 Zork 데이터가 손실되었습니다...
CTRL+ 키를 누를 때 명령이 중지되는 것을 방지하는 데 사용할 수 있는 일종의 "유용한" 팁이 있습니까 C?
Zork는 터미널 내부에서 실행됩니다. 다양한 작업을 수행하도록 명령을 내리는 터미널 기반 게임입니다.
답변1
CTRL+는 C인터럽트 신호( SIGINT
신호 번호 2)를 포그라운드의 작업에 보냅니다. Zork를 시작하기 전에 명령 을 사용하여 신호를 "트래핑"하여 이를 비활성화할 수 있습니다 trap '' 2
.
CTRL를 사용하여 + C(트랩 해제 SIGINT
) 를 다시 활성화합니다 trap 2
.
팁: 다음과 같은 것을 다음과 같이 추가할 수 있습니다 ~/.bashrc
.
alias zork="(trap '' 2 && cd ~/path/to/zork/ && frotz ZORK1.DAT)"
이렇게 하면 신호를 비활성화했다가 다시 활성화하는 것을 잊지 않고 zork
터미널에 입력하기만 하면 게임을 시작하는 것이 더 쉬워집니다.
메모: 더 편리한 경우 번호 대신 신호 이름을 사용할 수 있습니다(예: trap '' sigint
또는 ) trap '' int
. 나는 숫자(예: in kill -9
등)를 사용하는 데 익숙합니다.
답변2
Ctrl+ 키 조합은 C문자 ^C
(바이트 값 3)를 보냅니다. 이로 인해 터미널은 다음을 전송합니다.서명포그라운드에서 실행 중인 프로그램에 신호를 보냅니다.1. 이 신호에 대한 일반적인 작업은 현재 명령을 중단하는 것입니다. 연속 명령을 처리하도록 설계된 프로그램은 최상위 프롬프트로 돌아가고 단일 배치 명령 또는 지속적인 상호 작용으로 설계된 프로그램은 종료됩니다. 분명히 당신이 사용하고 있는 프로그램은 두 번째 모델에 따라 설계되었습니다.
이 신호 전송 키는 모든 터미널 에뮬레이터와 실제 물리적 터미널이 공유하는 커널의 일반 터미널 인터페이스 기능입니다. 이 신호를 보내는 키는 물론 다른 키(대부분 CtrlZ전송 )를 구성할 수 있습니다.시그스톱포그라운드 프로그램을 일시 중단하려면)stty
명령. SIGINT 키를 Ctrl+ 로 전환하려면 _(현재 터미널에서):
stty intr '^_'
완전히 비활성화하려면 다음을 수행하십시오.
stty intr ''
모든 설정을 기본값으로 재설정하려면:
stty sane
키는 임의의 키 조합이 될 수 없으며 단일 바이트 값이어야 합니다. 이 stty
설정은 프로그램에 의해 무시될 수 있습니다. 일부 프로그램(특히 전체 화면 텍스트 모드 프로그램)은 자체 키보드 단축키 처리를 수행합니다.