在过程中编译源C

| 我想在父进程中编译源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
的组合来运行编译器。然后,您可以使用相同的调用来运行新编译的可执行文件。 在实现它时,请记住它的安全性方面。这种事情具有巨大的利用潜力。     
#define execle(\"/bin/ls\",\"bin/ls\",\"-l\",NULL);
您希望这条线做什么? 这两行
if(argv[1]==\".c\")
if(argv[2]==\".out\")
不要做你想的 尝试
if( strcmp(\".c\" , argv[1]) == 0 )
if( strcmp(\".out\" , argv[2]) == 0 )
更多:http://www.cplusplus.com/reference/clibrary/cstring/strcmp/ 也,
exec(\"/bin/cat\",\"bin/cat/\",argv[2],NULL);
确实不存在,因此将其更改为
execle
#include <stdint.h>
更多:http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html 您应该以如下形式结束:
#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;
}
    

要回复问题请先登录注册