https://github.com/winebarrel/fdpass
元旦リリースできた。
これは何?
プロセス間でファイルディスクリプタを転送するためのライブラリです。
ユースケースは少ないと思いますが、いろいろとがんばればMySQLのコネクションをプロセス間で共有する、とかできると思います(あくまでがんばれば、ですが)
インストール
gem install fdpass
サンプルコード
server.rb
require 'fdpass' begin fdpass = FDPass.server('/tmp/fdpass.sock') t = Thread.fork { loop do fd = fdpass.recv io = IO.open(fd) io.puts('%s: %s' % [fd, __FILE__]) end } t.join ensure fdpass.close if fdpass.closed? end
client.rb
require 'rubygems' require 'fdpass' begin fdpass = FDPass.client('/tmp/fdpass.sock') fdpass.send($stderr.fileno) ensure fdpass.close if fdpass.closed? end
その他
OSXで動作確認済み。Linuxも大丈夫だと思います、たぶん。
以下のページを参考にさせてもらいました。
- http://0xcc.net/blog/archives/000132.html
- http://d.hatena.ne.jp/viver/20080208/p1
- http://d.hatena.ne.jp/moriyoshi/20070416/1176719495
Please fork it!