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