Ruby FFI - перехват вызовов C для выхода () - PullRequest
0 голосов
/ 14 марта 2011

У меня есть приложение Rails с FFI binding to a custom RPC system.К сожалению, код C вызывает exit(), когда он не может подключиться к серверу RPC, и завершает работу всего приложения Rails.

Возможно ли перехватывать вызовы на exit() в Ruby?Я бы предпочел не менять код C.

1 Ответ

1 голос
/ 14 марта 2011

Вы не можете перехватить вызов функции. Однако, возможно, вы можете связать код C с фиктивной функцией exit(), которая фактически не завершится.

Более чистое решение состоит в том, чтобы изменить код C, чтобы обеспечить ему правильное поведение библиотеки.

Вы также можете раскошелиться на ruby, прежде чем выполнять вызов RPC, немного с точки зрения производительности, но это также решит проблему ...

...