他のTTYセッションのSTDINストリームバッファからデータを削除する

他のTTYセッションのSTDINストリームバッファからデータを削除する

しばらく前に、tty別々の端末ウィンドウで複数のセッションを実行する際に問題が発生しました。高価なディスクアクセスコマンドを実行し、そのコマンドが返されるのを待っています。同時に、私はttyグラフィックデスクトップ環境内の別のウィンドウで別のセッションで作業していました。

誤ってディスクアクセスコマンド(デフォルトではコマンド)を実行している端末に焦点を当て、端末に次のようにcp入力しました。私は別のウィンドウに入力すると思いました。

Enter

に基づいてこの問題私はデータがSTDIN実行されるとすぐに最初のコマンドが返されるのを待つデータストリームバッファにあることを知っていますcp。ご存知のように、私はコマンドをもう一度実行するように言いました:/。

質問

時間がかかります(このコマンドを返すのに30分以上かかります)、bashが完了しているプロセスを再実行する前にこれらの文字をバッファからフラッシュする方法はありますかSTDINtty

それとも、別のbashインスタンスのファイルストリームバッファからデータをフラッシュすることに加えて、私が待っているプロセスが完了するとすぐにデータ評価を防ぐ他の方法はありますか?

答え1

あなたのttyに対応するnoflshフラグがオフになっている場合は確認できます

stty -a < /dev/pts/whatever | grep -e -noflsh

他のttyで実行されますが、デフォルトではオフになっています。これにより、入力中断、終了、または停止文字が入力キューをフラッシュします。Ctrl-Zしたがって、を入力すると、fg現在実行中のコマンドが中断され、入力が更新され、次のコマンドが再開されます。

答え2

おそらくbashにSIGSTOPを送信して何もしないようにし、作業が完了したらbashにSIGKILLを送信する必要があります。

SIGSTOPは、bashが操作が完了するのを待つのを防ぎます。それ以外の場合はゾンビ状態になります。 SIGKILLの初期化後、ミッションの規模が再調整され、ゾンビが消えます。

関連情報