コマンド実行中に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はエコーを意味し、ターミナルを通常モードに戻します。

おすすめ記事