我将概述我希望实现的场景。
我有一个主要的应用程序。 该应用程序可以在安全环境/外壳中加载其他应用程序,这意味着这些子应用程序不能再与操作系统或彼此交互。
父程序可以随时调用这些子程序的函数。 子程序也可以随时调用父程序的函数。
有谁知道如何在C++中实现这一点?最好是父程序和子程序都是用C++编写的。
在父应用程序中加载子应用程序的性能并不重要。唯一重要的是子父之间调用函数时的通信性能。
一种可移植的解决方案:Google Native Client
一种可能的Linux解决方案:
我不熟悉上述答案中的操作系统限制。然而,我找到了一种简单的方法来解决这个问题。希望它有所帮助并且没有技术问题。我使用的是Linux操作系统。假设我想在另一个C++程序A中调用C++程序B。我编写了一个包含运行程序B的系统调用的perl脚本(例如PerlScript.pl)。然后在A中,我进行了一个系统调用,如system("perl PerlScript.pl"),让perl代替我运行B。
system
会在代码中造成非常严重的漏洞,特别是如果运行它的人可以创建自己的 PerlScript.pl 文件并将其替换。此外,它不支持两个进程“随时调用彼此的函数”,除非在两者中都加入额外的代码。 - Nick Reed
fork()
和exec()
函数系列可以帮助你。 - Grijesh Chauhan