義田と申します。

ruby-pcap(http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html)を
Ruby1.9.1でも使えるようにしようと思い、Debian上で開発しています。
  http://github.com/yoppi/ruby-pcap
pcapでパケットをキャプチャする際、pcap_loopやpcap_dispatchでpcap側の制御に
入るとCtrl-CでSIGINTを送っても受けつけないので、現在のruby-pcapの実装では
TRAP_BEG、TRAP_ENDで上記の関数を囲んでいます。
ところが、Ruby1.9.1ではTRAP_BEG、TRAP_ENDはruby/backward/rubysig.hで定義さ
れており、rubysig.h自体がobsoleteであり、TRAP_BEG、TRAP_ENDもdeprecatedと
なっています。
Ruby1.9.1でそれらしい関数やマクロを探してみたのですが、見つけられませんでした。
Ruby1.9.1でTRAP_BEG、TRAP_ENDの代わりとなる関数またはマクロが実装されてい
るなら、ご教示いただけたらと思います。

とりあえず、TRAP_BEG、TRAP_ENDは残したままruby-pcapをコンパイルしたものを使って
以下のスクリプトをRuby1.9.1で実行すると、パケットを一つキャプチャしてそのまま反応がな
くなり、SIGINTも受けつけない状態になりました。
Ruby1.8.7-p160では問題なく動きます。

  % cat test.rb
  require 'pcap'

  dev = Pcap.lookupdev
  cap = Pcap::Capture.open_live(dev)
  cap.setfilter("icmp")
  cap.loop do |pkt|
    puts pkt
  end
  cap.close

  # 別端末でpingを実行
  % ruby test.rb
  192.168.0.10 > 192.169.0.1: icmp: echo request
  ^C
  ^C

また、TRAP_BEG、TRAP_ENDをコメントアウトしたものをコンパイルして同様のスクリプトで
試したところ、パケットは正常にキャプチャできましたが、やはりSIGINTを受けつけません。

私の環境は以下の通りです。

  % gcc --version
  gcc (Debian 4.3.2-1) 4.3.2

  % ruby --version
  ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]

  % ruby -rrbconfig -e "puts Config::CONFIG['configure_args']"
  '--prefix=/usr/local/apps/ruby/ruby-1.9.1-p243' '--enable-pthread'
  '--enable-shared'

  % aptitude show libpcap-dev
  バージョン: 0.9.8-5

  % cat /etc/debian_version
  lenny/sid

-- 
義田