【发布时间】: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
我有一个带有 FFI 绑定到自定义 RPC 系统的 Rails 应用程序。不幸的是,当 C 代码无法连接到 RPC 服务器时,它会调用exit(),从而终止整个 Rails 应用程序。
是否可以在 Ruby 中捕获对 exit() 的调用?我宁愿不必更改 C 代码。
【问题讨论】:
标签: ruby-on-rails c ruby ruby-on-rails-plugins ffi
您不能捕获函数调用。但是,也许您可以将 C 代码与实际上不会退出的虚拟 exit() 函数链接。
到目前为止,更简洁的解决方案是更改 C 代码以使其具有适当的库行为。
您也可以在进行 RPC 调用之前 fork ruby,这在性能方面有点昂贵,但也可以解决问题...
【讨论】: