簡體   English   中英

從gcc中的另一個程序執行C程序

[英]Execute a C program from another program in gcc

我需要在項目中包含一個.h文件,該文件將在運行時提供。 由於.h文件是在鏈接時鏈接的,因此我無法包含.h文件。 因此,我決定編寫一個虛擬程序,該程序將創建.h文件,然后調用我的實際程序。 反正有做到這一點。 或者任何其他解決方案都是可能的。 我基本上需要在程序開始執行之前創建一個.h文件,並將其鏈接到我的程序。 我實際上應該獲取一個由用戶創建的文件,解析該文件,然后使用該文件中存在的字段創建一個結構。例如,如果文件包含以下數據:-fno:int:4,fname:char:30 ,ftype:int:4,那么我應該創建一個結構,如struct somename { int fno; char fname[30]; int ftype }; struct somename { int fno; char fname[30]; int ftype }; 然后,我應該能夠創建所創建結構的實例。 這就是我喜歡做的

dlopen是一種解決方案。 它允許在運行時加載動態庫。

  • 將您的虛擬程序編譯為動態庫。
  • 在.so上使用dlopen
  • 調用所需的任何函數,就好像它已被gcc鏈接一樣(請參見dlsym)。

您可以做的是:

  • 創建.h文件
  • 叉子
    • 如果在孩子中:execve
    • 如果在父親中:等待(或不,取決於您要做什么)

我會用一個Makefile ; 您的程序將在運行時接收頭文件(也許檢查它?),然后execve() make命令傳遞文件名。

但是,這聽起來很麻煩。 也許您正在嘗試使用錯誤的工具來實現目標。 也許您想先使用一些腳本? 或編寫兩個單獨的程序..? 你想做什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM