在C ++库中调用exit()会终止使用swig

时间:2015-12-02 13:12:52

标签: python c++ swig

我正在为C ++库编写Swig-Python包装器。当发生严重错误时,库会调用exit(err);,这会终止执行该库中函数的整个python脚本。

有没有办法绕过exit()函数返回脚本或抛出异常?

1 个答案:

答案 0 :(得分:0)

如果没有更多信息,很难提供解决方案,但是:

你写过这个图书馆吗?如果是这样,你可以重做它来抛出logic_error而不是打电话给exit吗?

如果库正在调用exit,这意味着完全是灾难性的失败。库的内部状态很可能是不一致的(你应该假设它是!) - 你确定要在此之后继续这个过程吗?如果你没有写图书馆,你就无法对此进行推理。如果你这样做,请参见上文。

也许您可以围绕库编写一个包装器进程,并在整个进程边界上编组调用?执行速度较慢,编写和维护更加痛苦,但它允许父进程(python)检测子进程的终止(库包装器)。