【问题标题】:Ruby FFI - trapping C calls to exit()Ruby FFI - 将 C 调用捕获到 exit()
【发布时间】:2026-02-06 13:40:01
【问题描述】:

我有一个带有 FFI 绑定到自定义 RPC 系统的 Rails 应用程序。不幸的是,当 C 代码无法连接到 RPC 服务器时,它会调用exit(),从而终止整个 Rails 应用程序。

是否可以在 Ruby 中捕获对 exit() 的调用?我宁愿不必更改 C 代码。

【问题讨论】:

    标签: ruby-on-rails c ruby ruby-on-rails-plugins ffi


    【解决方案1】:

    您不能捕获函数调用。但是,也许您可​​以将 C 代码与实际上不会退出的虚拟 exit() 函数链接。

    到目前为止,更简洁的解决方案是更改 C 代码以使其具有适当的库行为。

    您也可以在进行 RPC 调用之前 fork ruby​​,这在性能方面有点昂贵,但也可以解决问题...

    【讨论】: