[#44713] パイプ経由コマンド実行? — "morita" <m-morita@...>
もりたと申します。お世話になります。
10 messages
2008/03/03
[#44714] Re: パイプ経由コマンド実行?
— Hidetoshi NAGAI <nagai@...>
2008/03/03
永井@知能.九工大です.
[#44716] Re: パイプ経由コマンド実行?
— "m-morita" <m-morita@...>
2008/03/03
もりた です。
[#44725] Set[Set[1]]==Set[Set[1]] は偽? — "5.5" <5.5@...>
5.5 です。
22 messages
2008/03/04
[#44726] Re: Set[Set[1]]==Set[Set[1]] は偽?
— "Ohto, Yasunori" <Yasunori.Ohto@...>
2008/03/05
大戸です。
[#44744] Re: Set[Set[1]]==Set[Set[1]] は偽?
— "5.5" <5.5@...>
2008/03/06
5.5 です。
[#44728] ダウンロードリンクが古い — Kouhei Yanagita <yanagi@...>
こんにちは。柳田です。
10 messages
2008/03/05
[#44745] [ANN] Rails勉強会@東京 第28回のお知らせ — "MOROHASHI Kyosuke" <moronatural@...>
各位
1 message
2008/03/07
[#44769] Ann: Ruby-1.9.0-1 Windowsインストーラパッケージ — arton <artonx@...>
artonです。
4 messages
2008/03/13
[#44773] PHPとの関数対照表 — "tadashi nagao" <tadashi.nagao@...>
長尾です。
7 messages
2008/03/14
[#44782] $stdin.rewind が exec した子プロセスに伝わらない? — SATOH Fumiyasu <fumiyas@...>
さとうふみやす @ OSS テクノロジです。
11 messages
2008/03/17
[#44783] Re: $stdin.rewind が exec した子プロセスに伝わらない?
— Kazuhiro NISHIYAMA <zn@...>
2008/03/17
西山和広です。
[#44785] Re: $stdin.rewind が exec した子プロセスに伝わらない?
— Nobuyoshi Nakada <nobu@...>
2008/03/17
なかだです。
[#44786] Re: $stdin.rewind が exec した子プロセスに伝わらない?
— SATOH Fumiyasu <fumiyas@...>
2008/03/18
さとうふみやす @ OSS テクノロジです。
[#44787] Re: $stdin.rewind が exec した子プロセスに伝わらない?
— Nobuyoshi Nakada <nobu@...>
2008/03/18
なかだです。
[#44788] Re: $stdin.rewind が exec した子プロセスに伝わらない?
— SATOH Fumiyasu <fumiyas@...>
2008/03/18
さとうふみやす @ OSS テクノロジです。
[ruby-list:44717] Re: パイプ経由コマンド実行?
From:
Yukihiro Matsumoto <matz@...>
Date:
2008-03-03 06:15:12 UTC
List:
ruby-list #44717
まつもと ゆきひろです
In message "Re: [ruby-list:44716] Re: パイプ経由コマンド実行?"
on Mon, 3 Mar 2008 15:05:58 +0900, "m-morita" <m-morita@ybrain.co.jp> writes:
|ただ言語使用として合点がいきません。
|より実情に即して例示します。
| require "open-uri"
| open("|ruby t.rb","w").write open("http://www.google.co.jp").read # -- (1)
| # ... many executions as above
| open("|ruby t.rb","w").write("AAAA")
|
|ここで (1) の終了時点で t.rb にデータがわたってきません(デバッガーで
|ステップ実行すればわかります)。
|しかし、この一行で読み書きは完了しています。
|読み書き途中のまま次のスクリプト行に移っていませんし、この行の次へ行っ
|てしまうと、実装側もこのI/O が見えなくなっているはずです。(結局、インタ
|ープリタ終了時に吐き出されるようですが,,,)
Rubyにはopen()されたものがもう使われないということを知る手段
がありませんから、「ここでフラッシュするべきだ」という判断を
行うすべがありません。むやみにフラッシュすると今度はIO性能の
低下を引き起こしますし。
となると明示的にクローズする
open("|ruby t.rb","w"){|f|f.write open("http://www.google.co.jp").read}
と書いていただくのがよいのではないかと思います。7文字ほど増
えちゃいますが。