我正在嵌入式Linux平台(Intel Edison)上用C++制作一个基本的音乐播放器。
它通过向外壳发送命令来播放音乐
mpg123
.
播放音乐很好,但现在我需要添加媒体控件。我正在使用
每加仑123
命令播放我的MP3文件,如果你传递它
-C
标志,然后它侦听命令,如
p
为了暂停,
q
退出等
我使用另一个SO答案中的代码来执行命令
How to execute a command and get output of command within C++ using POSIX?
现在的问题是,当我运行命令从c++播放所选歌曲时(例如。
mpg123 -C /media/sdcard/Music/<songname>
)它挂起c++程序直到命令返回,直到歌曲播放完毕才返回。我可以使用
pthead
在并行线程中运行命令,但这仍然不允许我根据需要输入命令。
我想也许用另一种方式运行命令
tty
,然后以某种方式将命令传递给
每加仑123
通过将它们发送给另一个
tty公司
,但我找不到办法。(我不确定是否可行)
我已经试着做了几个小时,所以现在我准备在这里寻求帮助:)
对于如何在不冻结线程的情况下运行命令(在pthread或其他线程中),并且仍然能够将命令发送到
每加仑123
?