我在解释性编程环境(IDL)中调用外部程序时遇到库冲突问题。问题似乎是因为我调用的程序最终成为IDL的子代,所以库不会被重新加载。
在IDL中,我可以直接或使用shell启动子流程。有没有一种好的方法可以让我的程序在不作为子进程结束的情况下运行?
到目前为止我找到的唯一解决方案是使用ssh localhost my_program
。这很好用,但我想要一个更直接的解决方案。
实际上,您能否更详细地解释为什么以及如何 “不是儿童过程”?
—
grawity 2011年
我的具体问题与OS X上的动态库的冲突版本有关.IDL使用旧版本的libcurl.dylib,而我在IDL中调用的程序需要此库的较新版本。我不明白在OS X上如何处理动态库,但在我看来,一旦加载旧库,所有子进程都使用相同的库。在不同的终端中运行我的程序,或使用ssh连接在IDL中运行我的程序时,我没有库问题。
—
amicitas 2011年
创建一个不是当前进程子进程的进程似乎应该可以解决我的问题。我现在很好奇如何做到这一点。我本以为这是一件相当容易的事情,但似乎找不到办法。所以我的问题仍然是在当前流程树之外启动流程,而不是解决我的问题。
—
amicitas 2011年