On Mon, 24 Oct 2011 18:43:39 +0900
Tanaka Akira <akr / fsij.org> wrote:

> とりあえずワークアランドとして以下のようにすると避けられるでしょうか。

回避できました。以下のように正常終了します。
 % ruby -rpty -e 'PTY.spawn("/bin/cat") { |r,w,id| p r; p w; p id }'
 #<File:/dev/pts/28>
 #<File:/dev/pts/28>
 16125
また、test_pty.rb, test_io_console.rb 共にSkipやErrorが消えました。

なお、Solaris 9 およびそれ以前では posix_openpt が存在しないらしいため、
defined(HAVE_PTSNAME) のところも同様に対策する必要がある気がしますが、
未だにSolaris9を使っている人が新しいRubyを求めることは無いと信じたい。

それと、Solarisを識別するマクロは __sun のほうがよいのかもしれません。
OpenCSWでは #if defined(__sun) || defined(__sun__) 推奨、
  http://wiki.opencsw.org/porting-faq#toc18
pkgsrc developer's guide では __sun 推奨のようです。
  http://www.netbsd.org/docs/pkgsrc/fixes.html#fixes.build
もっとも、sun も私の手元の Sun cc, Fujitsu fcc, gcc ではすべて
定義されていました。__sun__ はGCCしか定義しないようです。

-- 
後藤 直久 ngoto / gen-info.osaka-u.ac.jp