Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从gcc中的另一个程序执行C程序_C - Fatal编程技术网

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

从gcc中的另一个程序执行C程序,c,C,我需要在我的项目中包含一个.h文件,该文件将在运行时提供。由于.h文件是在链接时链接的,因此我无法包含.h文件。所以我决定写一个虚拟程序来创建.h文件,然后调用我的实际程序。无论如何都有办法做到这一点。或者任何其他解决方案都是可能的。我基本上需要在我的程序开始执行之前创建一个.h文件,并且需要将它链接到我的程序。 实际上,我应该获取一个由用户创建的文件,解析该文件,然后使用该文件中的字段创建一个结构。例如,如果该文件包含以下数据:- fno:int:4,fname:char:30,ftype:i

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

你能做的是:

  • 创建.h文件
  • 叉子
    • 如果在child中:execve
    • 如果在父亲:等待(或不等待,取决于你想做什么)
您可以做的是:

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

    • 我会使用
      Makefile
      ;您的程序将在运行时接收头文件(可能是检查它?),然后
      execve()
      通过
      make
      命令传递文件名


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

      我会使用
      Makefile
      ;您的程序将在运行时接收头文件(可能是检查它?),然后
      execve()
      通过
      make
      命令传递文件名

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

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

      • 将虚拟程序编译为动态库
      • 在你的电脑上使用dlopen。所以
      • 调用您需要的任何函数,就好像它已被gcc链接一样(请参阅dlsym)
        • 是一种解决方案。它允许在运行时加载动态库

          • 将虚拟程序编译为动态库
          • 在你的电脑上使用dlopen。所以
          • 调用您需要的任何函数,就好像它已被gcc链接一样(请参阅dlsym)

          +1但是:不要这样做。解决真正的问题,而不是为了解决真正的问题而为自己创造的疯狂问题;-)我同意史蒂夫的观点
          dlopen
          基本上是针对插件的(顺便说一句,我还是不知道你是不是在这么做)+1但是:不要这样做。解决真正的问题,而不是为了解决真正的问题而为自己创造的疯狂问题;-)我同意史蒂夫的观点
          dlopen
          基本上是针对插件的(顺便说一句,我还是不知道你是不是在这么做),就像史蒂夫说的-不要这样做。:-)正如史蒂夫所说,不要这样做。:-)实际上,我应该获取一个由用户创建的文件,解析该文件,然后使用该文件中的字段创建一个结构;然后我应该能够创建所创建结构的实例。这就是我喜欢的do@nikhil考虑使用Python并从内部执行C代码,如果你关心性能的话。您的方法相当困难,因为您基本上是在尝试编写一个解析器来检查语法和分配内存。。祝您好运,避免出现错误。实际上,我应该获取一个由用户创建的文件,解析该文件,然后使用该文件中的字段创建一个结构。例如,如果该文件包含以下数据:-fno:int:4,fname:char:30,ftype:int:4,那么我应该创建一个类似struct somename{int fno;char fname[30],int ftype}的结构; 然后我应该能够创建所创建结构的实例。这就是我喜欢的do@nikhil考虑使用Python并从内部执行C代码,如果你关心性能的话。您的方法相当困难,因为您基本上是在尝试编写一个解析器来检查语法和分配内存。。祝你好运,避免出现错误。