是否可以在Perl中监视LXTerminal(shell)输出?

时间:2013-02-04 05:57:17

标签: linux perl shell

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

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

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

我想知道是否可以检查是否有正在播放的歌曲。 一旦完成播放歌曲,mpg321输出到终端。我的思路让我相信,如果我能“监视”终端的输出:

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

我可以把它放到if语句中。如果有更简单的方法可以做到这一点,或者如果我提到这种方法是可能的,我会非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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

但这只有在你可以说服mpg321禁用控制台缓冲时才会起作用。