Как запустить программу odaslive из файла c - PullRequest
0 голосов
/ 17 декабря 2018

Итак, я пытаюсь вызвать программу из файла ac, который создаю, но единственный способ, которым я смог это сделать, - это использовать функцию system (), которая сама по себе вызывает ошибку.Для запуска программы в терминале я использую:

~/odas/bin/odaslive -vc ~/odas/config/odaslive/matrix_creator.cfg

Это то, что я сейчас пытаюсь использовать для запуска той же программы, она компилируется и запускается в терминале, но ничего не происходит.

pid_t pid=fork();

if (pid==0){
    //static char *argv[] ={"echo","-vc ~/odas/config/odaslive/matrix_creator.cfg", NULL};
    execl("~/odas/bin", "~/odas/bin/odaslive", "-vc", "~/odas/config/odaslive/matrix_creator.cfg", (char *)NULL);
    exit(127);

} else {
    waitpid(pid,0,0);

}

1 Ответ

0 голосов
/ 17 декабря 2018

execl требует путь к файлу в первом аргументе.

Он не расширяется ~ домом для пути.Необходимо указать полный путь.

Проверьте возвращаемое значение и errno.Он сообщит вам о причине сбоя, если таковой имеется.

int ret = execl("/home/username/odas/bin/odaslive", "/home/username/odas/bin/odaslive", "-vc", "/home/username/odas/config/odaslive/matrix_creator.cfg", (char *)NULL);
...