많은 사람들이 Ctrl+s는 프로그램이 아닌 터미널 출력만 중지/일시 중지한다고 말했습니다. 하지만 오늘은 터미널에서 영화를 열었습니다.
mplayer mymovie.mkv
영화 중지를 누른 후에 ctrl+S
영화 재생이 시작되고 누른 후에만 재개(마우스 휠 사용) ctrl+q
많은 사람들이 말했듯이 ctrl+s가 터미널 출력만 중지하면 왜 이런 일이 발생합니까? ctrl+s ctrl을 사용하여 xmms 및 ffplay도 시도했습니다. +q
ffplay file.mp3 # The video stop,the terminal output stop, the audio continue
xmms file.mp3 # The audio continue
답변1
TTY만 중지합니다. 그러나 TTY에서 실행 중인 애플리케이션으로 전파되는 부작용이 있습니다.
Ctrl기본적으로 +를 수행하면 STTY는 프로그램이 연결된 파일 설명자에서 데이터 읽기를 중지합니다. 이 파일 설명자는 기본적으로 버퍼가 있는 파이프이므로 많이 쓰지 않는 프로그램은 계속 작동할 수 있습니다. 짧은 기간 동안 TTY가 읽지 않는 동안 버퍼가 가득 차면 여기에 쓰려고 하는 모든 응용 프로그램이 차단되어 중단됩니다.
의 세부 사항은 모르지만 ffplay
이것이 무슨 일인지 의심됩니다. 일종의 진행률 표시줄이나 상태를 터미널에 렌더링하면 해당 버퍼가 매우 빠르게 채워질 수 있습니다
. TTY에 쓰는 스레드만 차단될 수 있습니다. 따라서 비디오를 처리하는 스레드도 TTY에 쓰는 스레드이거나 다른 스레드가 필요한 경우에는 계속할 수 있습니다. TTY에 쓰고 있는 스레드가 중단됩니다.