【发布时间】:2021-12-04 21:59:31
【问题描述】:
我正在寻找一种高效(快速且安全)的方法来将多个脚本(及其关联的主函数 ())相互通信。有点像G-WAN 项目的原理,它使用启动器 (./gwan) 来读取/加载/编译不同的 .c 文件,每个文件都包含(或不包含)main() 函数。
理想情况下,我的启动器应该能够执行其他脚本的 main () 函数,同时通过它们的 argv 变量共享信息。
但如你所知,gcc -Wall script1.c script2.c script3.c -o test 给我返回一个函数 main() 的多重定义的错误,而gcc -Wl,--allow-multiple-definition -Wall script1.c script2.c script3.c -o test 只解释第一个 script1.c main() 函数。
也许解决方案是拥有一个通过共享变量编译其他脚本(script2.c 和 script3.c)的第一个脚本 (script1.c)?
感谢您的帮助,抱歉我的英语有限。
script1.c:
int main(int argc, char *argv[]){
...
int i = main(argc, argv); // main for script2.c
if(i == 0)
main(argc, argv); // main for script3.c
...
return(0);
}
script2.c:
int main(int argc, char *argv[]){
...
return(0);
}
script3.c:
int main(int argc, char *argv[]){
...
return(0);
}
【问题讨论】:
-
您需要分别编译每个程序,并使用
system或fork和exec启动一个新进程。 -
顺便说一句,C 中没有“脚本”。
-
好主意 dbush,但我对这个解决方案的问题是(例如)在 script1.c 中创建一个变量,该变量将在 script2.c 中传递和修改,然后使用(变量修改)在script1.c ...你有解决方案吗? (共享内存?)