メソッドの意味がソースを読んでも理解できなかったので、ruby-dev を漁る。[ruby-dev:14662], [ruby-dev:15026], [ruby-dev:20690]。
ルート権限のプロセスが完全に権限を放棄するためのポータブルなメソッド(change_privilege)と、一時的に放棄するためのポータブルなメソッド(switch)を提供するためと理解した。
Process::UID.switch do Process::GID.switch do ... end end
という書き方を意図されているのか。
switch メソッドはブロック必須にした方が良いのではと思う。ブロックありなしでメソッドの意味が違い過ぎる。グローバルな影響を与えるメソッドにブロックを与えると、その影響がブロックローカルになるという仕様のメソッドは Ruby ではあんまりない気がする。Thread.new はブロック必須だし。fork はブロック必須じゃないけど、これは仕方ない。
最近のコメント