【发布时间】:2013-03-04 13:51:29
【问题描述】:
我正在寻找一个程序来编译另一个程序。 目的是使用 exec 运行 gcc。 我必须使用 execve 而我拥有的是:
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char* argv[], char* envp[])
{
argv[0] = "gcc";
execve("/usr/bin/gcc" , argv, envp);
return 0;
}
通过做
gcc -Wall p3p4.c -o run
它编译没有问题,但是在做时
./run p3p1.c
要尝试编译另一个,会发生这种情况:
run: error trying to exec 'cc1': execvp: No such file or directory
编辑:
按照建议,添加行时:
argv[0] = "gcc";
程序成功运行。 感谢您的意见。
【问题讨论】:
-
为什么不使用Make?
-
你在
main中得到的argv和你传递给execve的argv需要不同。它需要以空指针终止,argv[0]通常是正在执行的程序的名称。 -
你不使用 system() 吗??
-
@slugonamission
argv应该已经被NULL指针终止。 -
@slugonamission 该向量已经以 NULL 结尾。