0

我最近才开始学习 Perl,所以请原谅我在这门语言方面缺乏技术词汇。

我有一个使用 mpg321 播放音频的 Perl 脚本。我有命令:

if(song is not being played)
{
     system("mpg321 song.mp3 &");
}

我想知道是否可以检查是否有一首歌曲已经在播放。mpg321 播放完歌曲后输出到终端。我的思路让我相信我是否可以“监控”终端的输出:

[0:00] song.mp3解码完成

我可以以某种方式将其放入 if 语句中。如果有更简单的方法可以做到这一点,或者如果我提到的这种方法可行,我将非常感谢您的帮助!

4

1 回答 1

0

您可以打开执行管道并观察该管道的输出,例如:

my $pipe;
open $pipe, "mpg321 song.mp3 |";
while (my $line = <$pipe> {
    # check if mpg321 printed something...
}

但这只有在您可以说服mpg321禁用控制台缓冲时才有效。

于 2013-02-04T06:29:14.257 回答