conf.gem :github => 'iij/mruby-process'
pid = Process.fork() { hogo.run }
Process.waitpid pid
以下の方法がある。
- ブロックをC言語で用意する。
- ブロックを受け取るメソッドを用意して、これを経由して行う
ブロックをC言語では関数として用意する必要がある。
mrb_state*,mrb_valueを受け、mrb_valueを返す型にする。
static mrb_value myfunc(mrb_state *mrb, mrb_value obj) {
return mrb_nil_value();
}
struct RProc *blk;
mrb_value proc;
blk = mrb_proc_new_cfunc(mrb, myfunc);
proc = mrb_obj_value(blk);
mrb_value val;
val = mrb_funcall_with_block(mrb, mrb_obj_value(mrb_class_get(mrb, "Process")), mrb_intern_cstr(mrb, "fork"), 0, NULL, proc);