Возможно, ядро этого вопроса было задано очень много на этом сайте.Получение pid, пытающегося остановить программу с помощью C
Я работаю с pocketsphinx, и я пытаюсь играть музыку каждый раз, когда я прошу об этом.
Когда я говорю «МУЗЫКА», программа исполняет музыку, моя идея в том, что когда я говорю «STOP», музыка должна останавливаться. Я пытаюсь получить PID следующим образом. Я получил эту идею от этого question
Я использую popen Я получаю PID, но не так, когда он добирается до pid_t pid = strtoul (строка, 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);
}
В вашем связанном вопросе принятый ответ выполняет «popen» на 'pidof'. Это не то, что вы делаете. Вам в основном нужно делать «popen» дважды, сначала на 'aplay', а затем на' pidof'. – DoxyLover
@Diego Вы пытались выполнить свою программу с правами root? –
@DoxyLover, как я могу получить pidof aplay? – Diego