我刚刚开始学习Perl,所以请原谅我在这门语言方面缺乏技术词汇。
我有一个使用mpg321播放音频的Perl脚本。我有命令:
if(song is not being played)
{
system("mpg321 song.mp3 &");
}
我想知道是否可以检查是否有正在播放的歌曲。 一旦完成播放歌曲,mpg321输出到终端。我的思路让我相信,如果我能“监视”终端的输出:
[0:00] song.mp3的解码完成了
我可以把它放到if语句中。如果有更简单的方法可以做到这一点,或者如果我提到这种方法是可能的,我会非常感谢您的帮助!
答案 0 :(得分:0)
您可以打开执行管道并监视该管道的输出,例如:
my $pipe;
open $pipe, "mpg321 song.mp3 |";
while (my $line = <$pipe> {
# check if mpg321 printed something...
}
但这只有在你可以说服mpg321
禁用控制台缓冲时才会起作用。