stdin
명령이 실행되는 동안 ash
(대신 ) 중지하는 방법은 무엇입니까 bash
?
예를 들어:
sleep 10
- 실행
echo hello
중에 입력하세요.sleep
- 관찰
hello
은 완료stdout
후sleep
예상하다:
sleep 10
- 실행
echo hello
중에 입력하세요.sleep
sleep
실행 중에 아무것도 입력되지 않은 것처럼 쉘을 관찰하십시오.
해결책이 다음과 같기를 바랍니다.tput <stop stdin>; sleep 10; tput <restart stdin>; <enter>
이는 쉘 스크립트에서는 발생하지 않습니다(대화형 쉘과 함께 사용하는 경우에만 필요함).
답변1
stty -echo
터미널의 에코를 비활성화하지만 무언가를 입력하면 기억되고 쉘이 입력된 키를 선택합니다.
그런 다음 떠나기 전에 stty echo
(에코 모드로 되돌리기) 다음 절차를 사용하여 터미널 입력을 배출합니다.
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int main(void)
{
tcflush(0, TCIFLUSH);
return 0;
}
모든 것이 될 것입니다 stty raw -echo;sleep 10;stty sane;./my_program
.
CtrlC CtrlZ 간섭을 피하려면 raw를 사용하세요. Sane은 에코를 의미하고 터미널을 일반 모드로 되돌립니다.