我正在尋找一個編譯另一個程序的目的。 正在使用exec來運行gcc。 我必須使用的execve和我有什麼是:製作一個C程序來編譯另一個
#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";
的程序管理工作。 感謝您的意見。
爲什麼不使用[製作](http://en.wikipedia.org/wiki/Make_(軟件))? – 2013-03-04 13:53:49
您在'main'中獲得的'argv'和您傳遞給'execve'的'argv'需要不同。它需要用空指針終止,'argv [0]'通常是正在執行的程序的名稱。 – slugonamission 2013-03-04 13:55:02
是不是你使用system()? – 2013-03-04 13:56:16