我正在制作一个函数,可以读取在 Spotify 中播放的当前歌曲的元数据。这是在 lua 中编程的,因为它是一个很棒的 wm 的实现。我得到以下行来获取我以后可以使用的所有元数据。
handle = io.popen('qdbus org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata | awk -F: \'{$1=\"\";$2=\"\";print substr($0,4)}\'')
但是,当 Spotify 未运行时,我没有得到预期的信息,并且 qdbus 将错误写入 stderr 流。我想利用 qdbus 写入错误流的事实来确定故障并在那里停止程序。(这也应该捕获与 spotify 是否正在运行无关的任何其他错误)
我的理解是lua popen使用popen3可以细分stdout和stderr。但到目前为止我所有的努力都没有结果,我的错误流总是空的。是否可以检查 stderr 中的非 nil 值以确定对 qdbus(或 awk)的错误调用?
谢谢!