在进程中编译源代码C
我想在父进程中编译源C,然后创建可执行文件,我想将其运行到子进程中。有什么想法吗 多谢各位在进程中编译源代码C,c,unix,exec,fork,C,Unix,Exec,Fork,我想在父进程中编译源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]=="
#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(“/bin/ls”,“bin/ls”,“-l”,NULL);
int main(int argc,字符**argv)
{
int i;
对于父/驱动程序中的(i=1;i,请使用system(3)
调用或fork/exec/wait
组合来运行编译器。然后可以使用相同的调用来运行新编译的可执行文件
在实现它时,请记住它的安全方面。这种东西有巨大的利用潜力。在父/驱动程序中,使用系统(3)
调用或fork/exec/wait
的组合来运行编译器。然后,您可以使用相同的调用来运行新编译的可执行文件
#define execle("/bin/ls","bin/ls","-l",NULL);
在实现它的时候要记住它的安全性。这种东西有巨大的开发潜力
#define execle("/bin/ls","bin/ls","-l",NULL);
你希望这条线做什么
这两条线
if(argv[1]==".c")
if(argv[2]==".out")
不要做你想做的事
试一试
更多:
而且
实际上不存在,因此将其更改为execle
和#include
更多:
你应该以这样的方式结束:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc , char **argv)
{
int i;
for(i=1 ; i<argc ; i++)
{
if(strcmp(".c" , argv[1]) == 0)
{
if(fork()==0)
{
execle("/usr/bin/gcc","/usr/bin/gcc",argv[1],NULL);
exit(1);
}
}
if(strcmp(".c" , argv[1]) == 0)
{
if(fork()==0)
{
execle("/bin/cat","bin/cat/",argv[2],NULL);
exit(1);
}
}
}
return 0;
}
#包括
#包括
#包括
int main(int argc,字符**argv)
{
int i;
对于(i=1;i
你希望这条线做什么
这两条线
if(argv[1]==".c")
if(argv[2]==".out")
不要做你想做的事
试一试
更多:
而且
实际上不存在,因此将其更改为execle
和#include
更多:
你应该以这样的方式结束:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc , char **argv)
{
int i;
for(i=1 ; i<argc ; i++)
{
if(strcmp(".c" , argv[1]) == 0)
{
if(fork()==0)
{
execle("/usr/bin/gcc","/usr/bin/gcc",argv[1],NULL);
exit(1);
}
}
if(strcmp(".c" , argv[1]) == 0)
{
if(fork()==0)
{
execle("/bin/cat","bin/cat/",argv[2],NULL);
exit(1);
}
}
}
return 0;
}
#包括
#包括
#包括
int main(int argc,字符**argv)
{
int i;
对于(i=1;i将其写入一个文件,系统输出到编译器,删除源文件并执行生成的二进制文件(假设编译工作正常)?从技术上讲,您想要的东西没有意义。编译器完成后,编译器进程将不再存在,因此它将无法拥有任何子进程,因为它将不存在。不过,您可以在子进程中同时执行这两个操作。将其写入文件,系统输出到编译器,删除源文件并执行二进制生成d(假设编译成功)?从技术上讲,您想要的是没有意义的。编译器完成后,编译器进程将不再存在,因此它将无法拥有任何子进程,因为它将不存在。不过,您可以在子进程中同时执行这两个操作。