我正在为一个mp3播放器(mpg123 linux)开发Web界面。Mpg123是一款命令行mp3播放器,可以使用键盘输入进行控制。例如:
$ mpg123 -C filename.mp3
它将开始播放歌曲并监控键盘输入以进行控制。按下's'将暂停歌曲,按下'q'将退出等。
我正在使用Perl脚本生成mpg123进程。从该脚本中,我想向该进程发送输入。我有该进程的pid,只需发送按键以进行控制。
您只需将您的mp3播放器作为perl的管道生成即可。就像这样:
$| = 1; # Set unbuffered output.
open( my $mp3player, "| mpg123" ) or die "cannot start mp3 player: $!";
print $mp3player "s";
...
print $mp3player "q";
close $mp3player
多次脚本调用的第二次尝试:在交互式 shell 中输入 tty
,这将给出一个伪终端名称。现在在该 shell 中启动您的播放器。在另一个 shell 中,向该伪终端写入内容。例如:echo "s" > /dev/pts/11
。播放器将以此作为输入接收到。如果这样可以工作,请使用您的 Perl 脚本代替 echo 来写入该伪终端。