[#29170] Call for Papers Linux Conference 2001 — akira yamada / やまだあきら <akira@...>

18 messages 2001/04/10
[#30213] Re: Call for Papers Linux Conference 2001 — akira yamada / やまだあきら <akira@...> 2001/06/13

[#29190] Time Stamp Copy of File.copy — "たけ(tk)" <ggb03124@...>

 ftools.rb の move では utime を行っていて日付が同じになりますが、copy

42 messages 2001/04/11
[#29193] Re: Time Stamp Copy of File.copy — matz@... (Yukihiro Matsumoto) 2001/04/11

まつもと ゆきひろです

[#29201] Re: Time Stamp Copy of File.copy — " たけ (tk)" <ggb03124@...> 2001/04/11

たけ(tk)です。

[#29203] Re: Time Stamp Copy of File.copy — WATANABE Hirofumi <eban@...> 2001/04/11

わたなべです.

[#29212] Re: Time Stamp Copy of File.copy — Minero Aoki <aamine@...> 2001/04/12

あおきです。

[#29215] Re: Time Stamp Copy of File.copy — " たけ (tk)" <ggb03124@...> 2001/04/12

たけ(tk)です。

[#29220] Re: Time Stamp Copy of File.copy — Minero Aoki <aamine@...> 2001/04/12

あおきです。

[#29234] Re: Time Stamp Copy of File.copy — " たけ (tk)" <ggb03124@...> 2001/04/13

たけ(tk)です。

[#29236] Re: Time Stamp Copy of File.copy — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#29238] Array#include! — " たけ (tk)" <ggb03124@...> 2001/04/13

たけ(tk)です。

[#29244] Re: Array#include! — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#29348] Open3 — NISHIO Mizuho <mzh@...>

どうも西尾です。

16 messages 2001/04/20

[#29397] rnet.rb 〜高レベルネットライブラリ〜 — rubikitch <rubikitch@...>

るびきちです。

11 messages 2001/04/24

[ruby-list:29385] Re: Open3

From: NISHIO Mizuho <mzh@...>
Date: 2001-04-23 17:37:51 UTC
List: ruby-list #29385
どうも西尾です。

> なかだです。

省略

>   こんなバカみたいにめんどくさいことしなくてもこれでもいいかも。
> グローバルな状態を変更するところが気に喰いませんが。

----- open3win.rb ---------------
module Open3
  def popen3(*cmd)
    re, we = IO.pipe
    save_err = STDERR.dup
    STDERR.reopen(we)
    begin
      #io = IO.popen(*cmd, "r+")
      io = IO.popen(*cmd)
    ensure
      STDERR.reopen(save_err)
    end
    we.close
    pi = [io, io.dup, re]
    defined? yield or return pi
    begin
      yield(*pi)
    ensure
      pi.each {|p| p.close unless p.closed?}
    end
  end
  module_function :popen3
end

if $0 == __FILE__
  ios = Open3.popen3('ruby hoge.rb')
  while l = ios[0].gets 
    print l
  end
end
--------------------------------

で動くようになったのですが、
ちょっと挙動がおかしいです。

-------- hoge.rb ---------------
STDERR.print "err", "\n"
p 123

(0..10).each do |i|
  if i % 2 == 0
    p i
  else 
    STDERR.print i, "\n"
  end
end
--------------------------------

サンプルとしてhoge.rbを使って、

ruby open3win.rb 

とすると、

err
1
3
5
123
7
9
0
2
4
6
8
10

となります。

# 標準出力とエラー出力を合わせ方がおかしいのでしょうか?

あと、同じ条件で

ruby -d open3win.rb 

を実行すると、
fatalのエラーがでます。


ruby -v の結果は

ruby 1.6.4 (2001-04-10) [i586-mswin32]

です。
よろしくお願いします。

***********************
NISHIO Mizuho
e-mail : mzh@portnet.ne.jp

In This Thread