【发布时间】:2017-03-24 03:24:00
【问题描述】:
序言
这可能是xy problem,所以如果有更好的方法来解决这个问题,我愿意接受偏离原始问题的建议。
问题
我有一个相当大的程序,可以生成大量指标、统计数据等。我需要的一项重要计算是能够生成复杂数学运算的输出。唯一可以生成此输出的工具是第三方供应商提供的应用程序。供应商很乐意为我的公司编译适用于任何操作系统/历史/架构的应用程序,但他们无法向我们提供源代码。因此,我们的程序必须依赖于作为同一项目的一部分交付的预编译程序,以及通过popen() 启动的供应商程序。
由于安装故障和其他问题,有时popen() 调用由于路径问题、文件被移动等而失败。这些不是我们可以控制的,但客户却将其归咎于开发人员。
问题
有没有办法,在linux 程序上使用简单的c 加上make,以某种方式将外部应用程序嵌入到我们自己的应用程序中,以便它可以popen()'ed 在私有内存映射中,以便我们的“主”应用程序始终可以使用该程序?
理想情况下,我们只需将此程序的源代码添加到我们自己的代码库中即可解决问题,但这对我们来说是不可用的。
【问题讨论】:
-
他们不能把它编译成一个库而不是一个独立的应用程序?
-
@ChrisDodd 很遗憾,不;他们不能将它作为图书馆运送。
-
当然他们可以,但选择不将其作为库发布。
-
可能在运行时解压(如解压缩)另一个程序文件,然后
popen它? -
您现有的应用程序是否由多个文件组成?在那种情况下,供应商提供的应用程序不只是安装包中的“另一个”文件,tarball,什么?它是如何被移动但其他文件保留在原位的?
标签: c make linux c linux popen libc