Slide 41
Slide 41 text
41
● mrb_get_argsを使い引数を取得
○ sscanf関数のような使い方
○ 第2引数に引数の型を指定する
○ 詳しくは公式ドキュメントを参照
● mrb_sys_failはSystemCallErrorを
raiseする
● mrb_fixnum_valueはint型を
mrb_valueに変換する
mrb_io_dup2の実装
シェルに機能を追加する
mrb_value mrb_io_dup2(mrb_state* mrb, mrb_value self) {
mrb_int oldfd, newfd;
int ret;
mrb_get_args(mrb, "ii", &oldfd, &newfd);
ret = dup2(oldfd, newfd);
if (ret == -1) {
mrb_sys_fail(mrb, "dup2");
}
return mrb_fixnum_value(ret);
}