実行中のプロセスLinuxにキーボード入力を送信します
質問
MP3プレーヤー(MPG123 Linux)のWebインターフェイスを開発しています。 MPG123はコマンドラインMP3プレーヤーであり、キーボード入力を使用して制御できます。例えば:
$ mpg123 -C filename.mp3
曲の再生を開始し、コントロール用のキーボード入力を監視します。 「S」を押すと、「Q」という曲が一時停止します。
PERLスクリプトを使用してMPG123プロセスを生み出しています。そのスクリプトから、このプロセスに入力を送信したいと思います。プロセスのPIDがあります。制御目的のためにこのプロセスにキーストロークを送信するだけです。
解決
PerlのパイプとしてMP3プレイヤーを生成する必要があります。そのようです:
$| = 1; # Set unbuffered output.
open( my $mp3player, "| mpg123" ) or die "cannot start mp3 player: $!";
print $mp3player "s";
...
print $mp3player "q";
close $mp3player
複数のスクリプトの呼び出しを2回目にしてください:インタラクティブなシェルに入力します tty
. 。それはあなたに擬似末端の名前を与えます。次に、このシェルでプレーヤーを開始します。別のシェルで、その擬似末端に書き込みます。例えば echo "s" > /dev/pts/11
. 。プレーヤーはこれを入力として受け取ります。これが機能する場合は、エコーの代わりにPerlスクリプトを使用して、擬似末端に書き込みます。
所属していません StackOverflow