2008-10-27から1日間の記事一覧

Linux: SEGVをハンドルする

#include <stdio.h> #include <string.h> #include <unistd.h> #include <signal.h> #include <errno.h> void trap(int no) { printf("signal: %d\n", no); exit(1); } int main() { struct sigaction sa; int *n; memset(&sa, 0, sizeof(struct sigaction)); sa.sa_handler = trap; if(sigaction(SIGSEGV, &s</errno.h></signal.h></unistd.h></string.h></stdio.h>…

SEGVをハンドルしようとした…

拡張ライブラリがこんな感じ。 #include <ruby.h> static VALUE segv(VALUE self) { int *n; *n = 5; return Qnil; } void Init_segv() { VALUE Segv = rb_define_module("Segv"); rb_define_module_function(Segv, "segv", segv, 0); } 何にもしないと、落ちる。 ~/</ruby.h>…