fdpass 0.1.0

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
実行結果


shell> ruby server.rb


shell> ruby client.rb
4: server.rb

その他

OSXで動作確認済み。Linuxも大丈夫だと思います、たぶん。

以下のページを参考にさせてもらいました。


Please fork it!