[prime-dev: 603] Re: Unix Domain Socket 対応について

Zurück zum Archiv-Index

Masaki Yatsu yatsu****@yatsu*****
2005年 1月 15日 (土) 20:41:13 JST


谷津です。

On 05.1.13 6:04 PM, Hiroyuki Komatsu wrote:

> At Thu, 13 Jan 2005 01:10:01 +0900,
> Masaki Yatsu wrote:
>>>>>> Mac OS Xに入っているrubyはUNIXSocket, UNIXServerがないようです。
>>>>>> 
>>>>>> /usr/lib/ruby/1.6/powerpc-darwin7.0/socket.bundleのシンボルを
>>>>>> 見てみましたが、*unix*が存在しませんでした……orz
>>>>>> 
>>>>>> 自分でrubyをインストールする必要がありそうです。
>>> 
>>> うーん、どうしましょうね。
>>> 諦めてもらうしかないのかなあ。
>> 
>> Mac OS XはUNIXドメインソケットがないわけでないので、
>> rubyのsocket.cをいじって、モジュールを作ってしまえば
>> なんとかなると思います。
>> MacUIMではそうしてみるつもりです。
> 
> なるほど。うまくいくことを願っています。

簡単でした。

ruby-1.6.8/ext/socket ディレクトリで以下を実行。

% ruby extconf.rb
% make

ソースはなにも変更していませんが、UNIXSocket, UNIXServer
はちゃんとコンパイルされます。

(証拠)
% nm socket.bundle | grep -i unix
000020bc t _open_unix
00006278 S _rb_cUNIXServer
00006274 S _rb_cUNIXSocket
000027b8 t _unix_accept
0000286c t _unix_addr
00002714 t _unix_path
000028f0 t _unix_peeraddr
0000279c t _unix_recvfrom
0000270c t _unix_s_sock_open
00002794 t _unix_svr_s_open
0000281c t _unixaddr
000020a8 t _unixsock_connect_internal

socket.bundleを好きなディレクトリにコピーし、prime
コマンドの先頭行でライブラリパスを指定。

#!/usr/bin/ruby -I<socket.bundleのディレクトリ>

これで prime -u /tmp/prime.sock が動作しました。

# なんでMac OS Xに入ってるrubyはUNIXドメインソケットが
# 無効になっているんだろう……。

---
谷津真樹 (Masaki Yatsu)
mailto:yatsu****@yatsu*****





Prime-dev メーリングリストの案内
Zurück zum Archiv-Index