我想在父进程中编译源 C,然后创建可执行文件,我想将它运行到子进程中。有什么想法吗?
谢谢。
#include <stdio.h>
#include <stdlib.h>
#define execle("/bin/ls","bin/ls","-l",NULL);
int main(int argc , char **argv )
{
int i;
for(i=1 ; i<argc ; i++)
{
if(argv[1]==".c")
{
if(fork()==0)
{
execle("/usr/bin/gcc","/usr/bin/gcc",argv[1],NULL);
exit(1);
}
}
if(argv[2]==".out")
{
if(fork()==0)
{
execle("/bin/cat","bin/cat/",argv[2],NULL);
exit(1);
}
}
}
return 0;
}
这是代码的样子,但是你能告诉我为什么它在 execle(..) 所在的行上给我错误吗?
最佳答案
在您的父/驱动程序中,使用system(3)
调用或fork/exec/wait
的组合来运行您的编译器。然后您可以使用相同的调用来运行新编译的可执行文件。
在实现它时,请记住它的安全方面。这种东西有巨大的利用潜力。
关于在一个过程中编译源C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5645829/