CTRL-Z터미널 에뮬레이터를 사용하면 현재 실행 중인 프로그램을 사용하거나 중지할 수 있습니다 CTRL-S. 이들신호의 차이점은 무엇인가요?
답변1
Ctrl-Z실제로 현재 포그라운드 프로그램을 중지하지만 터미널 에뮬레이터와는 아무 관련이 없습니다. 이는 현재 실행 중인 쉘에 의해 처리됩니다. 기본 Unix 셸에는 이 기능이 없으므로 단일 사용자 모드로 부팅되는 최소 버전의 임베디드 Linux와 같은 일부 시스템에서는 이 기능이 누락될 수 있습니다.
Ctrl-S현재 포그라운드 프로그램을 완전히 중지할 필요는 없습니다. 이것이 하는 일은 운영 체제의 터미널 코드에 터미널로의 데이터 전송을 일시적으로 중지하도록 요청하는 것뿐입니다. 프로그램은 실제로 여전히 실행 중이며 출력 버퍼를 채우지 않는 한 시스템 호출을 차단하지도 않습니다. 터미널 출력 일시 정지 기능 Ctrl-S은 고대 기능입니다.사실은기준텔레타이프 시대로 거슬러 올라감, 모든 Unixy 운영 체제에서 규칙에 따라 지원되지만 비활성화( stty -ixon
)되거나 다른 것으로 대체될 수 있습니다. Ctrl-S예를 들어, 텍스트 편집기 및 기타 대화형 프로그램은 자주 리바인드됩니다.
중지 후 다시 시작하는 방식에서 추가 차이점을 확인할 수 있습니다. Ctrl-Q나중에 터미널 출력을 다시 시작 Ctrl-S하고 중지된 프로세스를 다시 시작하려면 제어 셸에 명령을 실행 Ctrl-Z해야 합니다 .fg
답변2
하나는 작업을 일시 중지하고 배경으로 설정하고 다른 하나는 해당 위치에 고정합니다. Z를 사용하면 터미널로 돌아가서 bg
백그라운드에서 작업을 계속하거나 fg
포그라운드에서 계속하는 등의 명령을 실행할 수 있습니다. S를 사용하면 눈앞에 정지된 프로그램이 남게 됩니다.