如何在没有段错误的情况下从通过 rb_load_protect 加载的脚本调用退出
How to call exit from a script loaded via rb_load_protect without a segfault
我想从 Ruby 2.3.3 (Win32) 成功退出应用程序。当我尝试从该脚本退出程序时出现段错误。
我尝试了以下方法:
# script.rb
loop do
# do something
exit 0 if foo()
break if bar()
end
foo
和 bar
只是返回 Qtrue
或 Qfalse
.
我加载脚本:
ruby_init();
int ruby_state = 0;
VALUE script = rb_str_new_cstr("./script.rb");
rb_load_protect(script, 0, &ruby_state);
ruby_cleanup(ruby_state);
它会产生段错误。我还尝试将 ruby_cleanup
放入从 Ruby 调用的函数中,但它会产生相同的段错误。
如何停止 Ruby 虚拟机,或者至少停止当前脚本?
尝试exit!
。它会忽略回调等等。
我想从 Ruby 2.3.3 (Win32) 成功退出应用程序。当我尝试从该脚本退出程序时出现段错误。
我尝试了以下方法:
# script.rb
loop do
# do something
exit 0 if foo()
break if bar()
end
foo
和 bar
只是返回 Qtrue
或 Qfalse
.
我加载脚本:
ruby_init();
int ruby_state = 0;
VALUE script = rb_str_new_cstr("./script.rb");
rb_load_protect(script, 0, &ruby_state);
ruby_cleanup(ruby_state);
它会产生段错误。我还尝试将 ruby_cleanup
放入从 Ruby 调用的函数中,但它会产生相同的段错误。
如何停止 Ruby 虚拟机,或者至少停止当前脚本?
尝试exit!
。它会忽略回调等等。