history

青木日記 RSS

<前の日 | この月 | 次の日>

2007-07-12

うわー日記書くのめっちゃ久しぶりだ

風邪で完全にダウン。やすめないのがきつい。

…… 38 度台かあ。体感のわりに低いな。 まあ、おれは 39 度こえると吐くからそんなもんかもしれない。

(19:37)

Windows でパイプをつなぐ

Windows でパイプをつなぎたくなったとする。

それでいて system とかは使わず自力でつなぎたいとする。

なんでパイプをつなぎたいのかってのは人それぞれだが、 「パイプをつながないと死んじゃう病」になったとか、 cmd.exe にプチきれてシェルを書き始めたとか、理由はいろいろ考えられる。

そんなわけで Win32API を調べたりしたんだけど、 つなげるだけなら Ruby では IO.popen を使えばいいので IO.popen(["こまんど", "引数"]) と書いとけばいいわけである。 あ、第一引数に配列が渡せるのは 1.9 限定だな確か。

ただ、IO.popen で一段はパイプがつなげるのだが、 ls | grep test | less みたいに二段以上になると どうしたらいいのかわからなくなってしまった。 まあ IO.popen("ls | grep test", "w") とか書くと ちゃんとパイプが働くのだけど、 やっぱこう、なんとなく自力でやりたいわけである。

で考えたのが、GetModuleFileName で自分の実行ファイルのパスを得て、 --connect-pipe とか適当な引数をつけて自分を起動して、 パイプ接続先コマンドを exec させるという方法。 それでなんとなく動いたんだけど、なんか実にアホな感じである。 もっと楽にいけないのかね。 というか cmd.exe はどうやってんだ。

そういえば、exec もどうやって実装されてるのか結構謎であった。 けど、実装を見てみたらすげー単純で驚いた。 子プロセスを作って WaitSingleObject で終了を待ってんのね。 こんな方法があるんだなあ。

(20:21)

復活の予感……!

あー、適当なこと書いてたら調子よくなってきた。 明日には復活できるだろうか。

つーかさっさと寝ろという話だ。 はいそれじゃテンション高いまま寝ます。

(20:38)

Windows でパイプをつなぐ (2)

あれ? なんで IO.popen("ls | grep build | false") ってちゃんと動くんだろ。

……あああそうかこれ Mac OS X じゃん……。 だめだ本当に風邪はよくない。 もう寝ゆ。

(20:45)

本日のツッコミ(全1件) [ツッコミを入れる]
znz (2007-07-13 02:11)

IO.popen("-")じゃだめなんでしょうか?

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS