From: Tanaka Akira Date: 2010-12-23T23:02:09+09:00 Subject: [ruby-dev:42873] Re: [feature:trunk] option for Socket#sendmsg 2010年12月23日21:01 Nobuyoshi Nakada : > > Socket#recvmsgは scm_rights: true を指定するだけでメインのデータだけで > なく簡単にIOを受け取ることができますが、一方でSocket#sendmsg側には対応 > する指定ができません。以下のようなオプションを追加するのはどうでしょう > か。 > > s.sendmsg("foo", scm_rights: STDIN) > s.sendmsg("foo", scm_rights: [STDIN, STDOUT]) まず、現在でも以下のように可能です。 % ./ruby -rsocket -e ' s1, s2 = Socket.pair(:UNIX, :DGRAM) s1.sendmsg "stdin", 0, nil, Socket::AncillaryData.unix_rights(STDIN) _, _, _, ctl = s2.recvmsg(:scm_rights=>true) p ctl p ctl.unix_rights ' # [#] recvmsg 側に scm_rights: true が必要なのは fd が leak するのを防ぐためで、 sendmsg 側に対応するものが必要とは考えたことがありませんでした。 追加したい意図は何でしょう? -- [田中 哲][たなか あきら][Tanaka Akira]