在一个过程中编译源C

标签 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]==".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/

相关文章:

security - system() 与 execve()

java - 使用 Java 中的空参数执行 shell 脚本

c - 无法初始化结构数组

c - 写入 bst 中的前 n 个元素

c - 优先级是否使 < 在 == 之前执行?

bash - 命令输出 > sed 在特定字符串后替换

linux - 无线局域网phy0硬阻止

shell - Bourne/POSIX shell 参数拆分

linux - 如何正确格式化此命令: Exec=a=$(service httpd restart 2>&1) && notify-send "$a"

c - 在 main() 之前执行代码