명령이 실행되는 동안 stdin 중지

명령이 실행되는 동안 stdin 중지

stdin명령이 실행되는 동안 ash(대신 ) 중지하는 방법은 무엇입니까 bash?

예를 들어:

  1. sleep 10
  2. 실행 echo hello중에 입력하세요.sleep
  3. 관찰 hello은 완료 stdoutsleep

예상하다:

  1. sleep 10
  2. 실행 echo hello중에 입력하세요.sleep
  3. 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은 에코를 의미하고 터미널을 일반 모드로 되돌립니다.

관련 정보