• 締切済み

IIS+ActivePerl+Cygwinにて

Perlで open(STDOUT, '| gzip'); としてhttpヘッダ以降を圧縮して出力することを、以前ここで教えてもらいました。 ここで問題なのですが、プロセスが完了してもgzipのごみプロセスが残りっぱなしなのです。 再表示するたびにごみが増えていき、だんだん不安定になっていきます。 最後に close(STDOUT); してもgzipは終了しないようです。 これを終了する手段はないものでしょうか? IISでなくてもUnix+Apacheでも同じようなことが起こるようなら、サーバーにアップロードできなそうです。

みんなの回答

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

perlはよく知りませんが,awkの経験からすると、 close()の引数が間違っているように思えます。 STDOUTだけでなくパイプとgzipが組になっているので、 それ全体を指定する必要があって、 perlでの正しい記述はしりませんが、 close(STDOUT,'| gzip');のようになると思います。

haporun
質問者

お礼

open(ハンドル, ファイル名又はコマンド) という構文なので、STDOUTはハンドル、'|gzip' はコマンドなのです~。 closeは第1引数にファイルハンドルを取るので、第2引数はないようです。 awkだとそのような記述ができるのでしょうか? awkもすこしかじりましたが、あまりマニアックなことは知らないので・・・。 ご指摘ありがとうございました。

関連するQ&A