C++遗传编程:调用链接器/编译器,执行编译的程序和管道输入/输出

Æle*_*lex 7 c++ genetic process piping

这是一个通用的问题,虽然我很确定其中的一些部分已经得到回答但我想要的是意见而不是广泛的讨论.我打算做一个关于进化计算和遗传编程的硕士论文,我想得到Linux/C++专家的意见,是否有可能从遗传程序中创建源代码文件,调用gcc来编译它们,如果它们不能编译以捕获它们失败的原因,如果它们编译执行已编译的程序(作为新进程),然后能够将输入发送到该程序并捕获输出和任何引发的异常(或崩溃).我知道这个话题太宽泛了,但我想知道是否有人认为这是可以撤销的,愚蠢的尝试,或者即使有更好的方法可以做到这一点.

Ale*_* C. 1

是的,可以做到这一点,而且实际上非常简单。您将源代码输出到临时文件(mkstmp),您fork/exec编译过程(输出到临时文件),您fork/exec生成的程序,然后dup2插入pipe输入和输出。这是基本的 Unix 编程,用 C 语言不需要做任何复杂的事情。

代码生成本身可能更难正确执行,但这在很大程度上取决于项目。

此外,几个月以来我们就拥有了现代工具:我相信Clang绝对是这类东西值得关注的东西。如果你打算做的代码生成很简单(或者不简单,但是结构化),你也可以直接输出LLVM代码。这并不难,并且使您能够生成高效的即时编译代码。