【问题标题】:Is it possible to monitor LXTerminal(shell) outputs in Perl?是否可以在 Perl 中监视 LXTerminal(shell) 输出?
【发布时间】:2013-02-04 05:57:16
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: linux perl shell


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-05
      • 2010-12-12
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多