几天来一直困扰着popen的问题。
代码:
int main(){
FILE *fp = popen("mplayer /home/linaro/Music/cp.mp3", "r");
char buffer[1028];
while (fgets(buffer, 1028, fp) != NULL)
{
std::cerr<<buffer;
}
pclose(fp);
fp = 0;
return 0;
}
在linaro嵌入式控制器上运行。跑得很好,没有错误。尽管代码很简单(只是在执行时播放冷酷的歌曲然后退出),但这似乎让我感到更加悲伤。
如果我将命令本身复制并粘贴到普通的bash shell中,它运行正常。更糟糕的是,它是否运行良好,直到它插入其他地方。我不确定它现在是否通过耳机插孔连接到它在线路输出插孔之前。
无论如何,我运行时得到的错误是(总结到相关部分)
MPlayer svn r34540(Ubuntu),使用gcc-4.6(C)2000-2012 MPlaye4构建
团队mplayer:无法连接到套接字mplayer:没有这样的文件或
目录无法打开LIRC支持。你将无法使用
你的遥控器。
播放/home/linaro/Music/cp.mp3 libavformat版本53.21.1
(外部)不匹配的标题版本53.19.0仅音频文件格式
检测。剪辑信息:标题:科学家艺术家:酷玩专辑:A
血腥头年:2002评论:体裁:未知负荷
/ home / linaro / Music / Requested audio codec family [mpg123]
中的字幕(afm = mpg123)不可用。在编译时启用它。打开音频
解码器:[ffmpeg] FFmpeg / libavcodec音频解码器libavcodec版
53.35.0(外部)不匹配的标题版本53.32.2音频:44100 Hz,2 ch,floatle,256.0 kbit / 9.07%(比率:32002-> 352800)所选音频
编解码器:[ffmp3float] afm:ffmpeg(FFmpeg MPEG layer-3 audio)主页
目录无法访问:权限被拒绝AO:[pulse] Init失败:
连接被拒绝无法初始化音频驱动程序'pulse'Home
目录无法访问:权限被拒绝[AO_ALSA] alsa-lib:
pcm_hw.c:1293:(snd_pcm_hw_open)打开'/ dev / snd / pcmC1D0p'失败(-22):
无效参数[AO_ALSA]播放打开错误:参数无效
无法初始化音频驱动程序'alsa'[AO SDL]采样率:44100Hz
频道:使用aalib音频驱动程序的立体声格式floatle [AO SDL]。 [AO
SDL]不支持的音频格式:0x1d。 [AO SDL]无法打开音频:否
可用音频设备无法初始化音频驱动程序'sdl:aalib'
无法打开/初始化音频设备 - &gt;没有声音。音频:没有声音
视频:没有视频
同样,如果我将通过popen执行的确切命令复制并粘贴到控制台中,它就会开始播放。如果通过-ao alsa,-ao pulse,-ao oss也会失败,这让我完全陷入困境。任何帮助将不胜感激!
编辑: Linux是linaro,基于Ubuntu 12.04使用arm CPU
答案 0 :(得分:0)
问题正如Jonas和alk建议的那样 - 权限。一路上的东西改变了它的运行方式,但在一天结束时,脏的修复只是包括
su - user -c ' mplayer ... '
到被调用的行。