从gcc中的另一个程序执行C程序

时间:2010-11-10 13:42:44

标签: c

我需要在我的项目中包含一个.h文件,该文件将在运行时提供。由于.h文件在链接时链接,我无法包含.h文件。所以我决定写一个虚拟程序,它会创建.h文件然后我会调用我的实际程序。无论如何要做到这一点。或任何其他解决方案是可能的。我基本上需要在程序开始执行之前创建一个.h文件,并且需要将它链接到我的程序。                        我实际上应该取一个由用户创建的文件,解析该文件,然后创建一个包含该文件中存在的字段的结构。例如,如果该文件包含以下数据: -                    FNO:INT:4,FNAME:字符:30,FTYPE:INT:4       然后我应该创建一个像这样的结构                       struct somename { int fno; char fname[30]; int ftype }; 然后我应该能够创建创建的结构的实例。这就是我喜欢做的事情

3 个答案:

答案 0 :(得分:3)

dlopen是一个解决方案。它允许在运行时加载动态库。

  • 将您的虚拟程序编译为动态库。
  • 在.so上使用dlopen
  • 调用您需要的任何函数,就像它已通过gcc链接一样(参见dlsym)。

答案 1 :(得分:2)

你能做的是:

  • 创建.h文件
    • 如果在孩子:execve
    • 如果在父亲:等待(或不,取决于你想做什么)

答案 2 :(得分:0)

我会使用Makefile;你的程序会在运行时收到头文件(也许检查一下?)然后execve()传递文件名的make命令。

然而,这听起来非常麻烦;也许你正试图用错误的工具来实现某些目标。也许你想先使用一些脚本?或者写两个单独的程序..?你想做什么?