【发布时间】:2014-11-11 05:41:56
【问题描述】:
这个问题的核心可能在这个网站上被问了很多。
我正在使用pocketsphinx,每次我请求它时我都会尝试播放音乐。
当我说“MUSIC”时,程序会执行音乐,我的想法是当我说“STOP”时,音乐应该停止。我正在尝试通过以下方式获取 PID。我从这个question得到这个想法
我虽然使用 popen 我会得到 PID,但是当它到达 pid_t pid = strtoul(line, NULL, 10); 时不是这样,它返回给我 0。
如何获得这个 PID 并继续同时运行程序?
我使用的模板与您在 pocketsphinx 上找到的模板相同,希望在这里看到它的修改:http://pastebin.com/Duu2nbCA
if(strcmp(word, "MUSIC") == 0)
{
FILE *fpipe;
char *command = (char *)"aplay BobMarley.wav";
char line[256];
if ( !(fpipe = (FILE*)popen(command,"r")) )
{ // If fpipe is NULL
perror("Problems with pipe");
exit(1);
}
fgets( line, sizeof line, fpipe);
pid_t pid = strtoul(line, NULL, 10);
printf("The id is %d\n", pid);
}
【问题讨论】:
-
在您的链接问题中,接受的答案是在
pidof上执行popen。那不是你在做什么。你基本上需要做两次popen,第一次是aplay,第二次是pidof。 -
@Diego 你试过用
root permission执行你的程序吗? -
@DoxyLover 我如何获得 pidof aplay?
标签: c linux voice-recognition