在从属模式下运行时,我试图通过管道向 mplayer 发送命令,如下所示:
import subprocess, time
# start mplayer
song = 'mysong.mp3'
cmd = ['mplayer', '-slave', '-quiet', song]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
# send a command every 3 seconds.
# Full command reference here: http://www.mplayerhq.hu/DOCS/tech/slave.txt
while True:
print('sleep 3 seconds ...')
time.sleep(3)
cmd = 'get_meta_artist'
print('send command: {}'.format(cmd))
p.stdin.write(cmd)
output = p.communicate()[0]
print(output)
但输出什么都没有。
我从这个问题中举了一个例子。
在终端中运行相同的 mplayer 命令可以正常工作。我在这里想念什么?
更新:
我将 cmd 从“get_meta_artist”更改为“get_meta_artist\n”,以便将换行符也发送到管道,但输出中仍然没有任何内容。
更新2:
我把 cmd 改成“\npause\n”,音乐就暂停了。所以这意味着通过标准输入发送命令有效。这意味着“\nget_meta_artist\n”命令的输出字符串没有按预期返回......