在C中使用execlp调用可执行文件

时间:2018-10-23 15:00:58

标签: c exec

在我的程序中,我想使用execlp()执行文件的代码,但是遇到了一些麻烦。

假装我有一个包含功能f()的文件test.c:

void f(void){
    print("test");
}

在我的主程序中,我想调用execlp以执行文件测试中的功能f()。 我尝试过

execlp("test", "test", NULL);

但这不起作用

2 个答案:

答案 0 :(得分:0)

execlp()用于执行二进制可执行文件,而不是源代码。如果要从另一个文件运行函数f(),只需在编译过程中将其包括在源代码中即可。

答案 1 :(得分:0)

您需要在可执行文件中使用main()函数。

void f(void){
    print("test");
}

int main() {
    f();
    return 0;
}

运行可执行文件时,它总是从main()函数开始。

此外,在调用execlp()时,应使用可执行文件的完整路径名:

execlp("./test", "test", (char *)NULL);

开始时需要./,因为.变量通常不在$PATH中。因此,它可能正在执行/bin/test