简体   繁体   中英

Execute a C program from another program in gcc

I need to include a .h file to my project which will be supplied at the runtime. Since .h files are linked at linking time i am unable to include .h file. So i decided to write a dummy program which would create .h file and then i would call my actual program. Is there anyway to do this. Or any other solution is possible. I basically need to create a .h file before my program starts execution and need to link it up to my program. i actually should take a file which is created by user, parse the file and then create a structure with the fields present in that file.for example if the file contains the following data:- fno:int:4,fname:char:30,ftype:int:4 then i should create a structure like struct somename { int fno; char fname[30]; int ftype }; struct somename { int fno; char fname[30]; int ftype }; Then i should be able to create instances of the structure created. This is what i like to do

dlopen is a solution. It allows to load dynamic library at runtime.

  • Compile your dummy program as a dynamic library.
  • Make use of dlopen on your .so
  • Call any function you need as if it has been linked by gcc (see dlsym).

What you can do is:

  • create .h file
  • fork
    • if in child: execve
    • if in father: wait (or not, depends on what you want to do)

I would use a Makefile ; your program would receive the header file at runtime, (perhaps check it?) then execve() the make command passing the name of the file.

However, this sounds very cumbersome; perhaps you are trying to achieve something with the wrong tool. Maybe you want to use some scripting first? Or write two separate programs..? What are you trying to do?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM