我正在为 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 来写入伪终端。