[#44725] Set[Set[1]]==Set[Set[1]] は偽? — "5.5" <5.5@...>

5.5 です。

22 messages 2008/03/04

[#44782] $stdin.rewind が exec した子プロセスに伝わらない? — SATOH Fumiyasu <fumiyas@...>

さとうふみやす @ OSS テクノロジです。

11 messages 2008/03/17
[#44783] Re: $stdin.rewind が exec した子プロセスに伝わらない? — Kazuhiro NISHIYAMA <zn@...> 2008/03/17

西山和広です。

[ruby-list:44720] Re: パイプ経由コマンド実行?

From: "M. Morita" <m-morita@...>
Date: 2008-03-03 08:38:38 UTC
List: ruby-list #44720
まつもと様

もりた です。懇切丁寧なご説明ありがとうございます。
> |  open("foo","w").write("a\n")
> |  open("foo","w").write("b\n")
> 
> 上のプログラムでは最初の行でopenしていますが、一度writeしたあ
> と放置されていますので、IOオブジェクトは今後書き込みがあるか
> もしれないので、バッファをflushしません。openの戻り値を他で参
> 照していないので、人間は「もう終わった」と思うかもしれません
> が、それはRubyの関知するところではないからです。
そうでしたか、わかりました。IO オブジェクトは変数と別管理になって
いるのですね。

私の思い違いは「open の際に局所的な変数(オブジェクト)を生成して、
その変数がバッファを内包していると思っていて、それがソース上の
スコープにある変数に代入されなければ、処理終了後その変数は GC 
対象であり、その時点で終末処理できる」でした。

> どのように思っていらっしゃったかは知る由もないのですが、はっ
> きり言えることは「なんらかの方法でちゃんとcloseしてください」
> です。
はい。アドバイスありがとうございます。

In This Thread