如何在没有段错误的情况下调用通过rb_load_protect加载的脚本的退出

时间:2017-05-18 16:24:09

标签: c ruby ruby-c-extension

我想从Ruby 2.3.3(Win32)成功退出应用程序。当我尝试从该脚本退出程序时,我得到了段错误。

我尝试了以下内容:

# script.rb
loop do
    # do something
    exit 0 if foo()
    break if bar()
end

foobar刚刚返回QtrueQfalse

我用以下代码加载脚本:

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 VM,或者至少停止当前脚本?

1 个答案:

答案 0 :(得分:1)

试试com.amazonaws.services.s3.model.AmazonS3Exception with message The Content-MD5 you specified was invalid.。它忽略了回调等等。