如何从C文件运行odaslive程序

时间:2018-12-17 01:37:39

标签: c++ execl

因此,我试图从正在生成的c文件中调用程序,但是我能够做到这一点的唯一方法是使用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 :(得分:1)

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);