StringIO の

% ruby -rstringio -e 'f = StringIO.new
f.seek 10
p f.read
p f.read
'
nil
nil

という挙動は IO の

% echo -n > 0
% ls -l 0
-rw-r--r--    1 akr      akr             0 Dec 10 15:37 0
% ruby -e 'f = open("0")
f.seek 10
p f.read
p f.read
'
""
nil

という挙動と一貫してないんじゃないでしょうか。

どちらをどちらに合わせるべきかという点に関しては、StringIO のような挙
動を IO にさせるには read(2) だけではできないので、StringIO を IO にあ
わせるほうが良いと思います。
-- 
[田中 哲][たなか あきら][Tanaka Akira]