脳ざらし紀行


2007-08-19

_ Process::UID と Process::GID

メソッドの意味がソースを読んでも理解できなかったので、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 はブロック必須じゃないけど、これは仕方ない。

お名前:
E-mail:
コメント:
本日のリンク元

最近のコメント

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|04|05|
2011|04|
2012|03|07|
2013|01|02|07|
トップ «前の日記(2007-08-16) 最新 次の日記(2007-09-01)» 編集