Hatena::ブログ(Diary)

Islands in the byte stream

2013-01-18

環境変数にいろいろ突っ込み過ぎると危険があぶない

$ export FOO=`perl -E 'say "." x 1_000_000'`
$ perl -v
bash: /usr/bin/activeperl: Argument list too long

簡易的にIPCをする方法として環境変数にJSONを突っ込んでサブプロセスから参照する、みたいなことはたまにすると思いますが、ちょっと大きなデータを突っ込むとサブプロセスを起動できなくなります。データサイズが未知の場合は使ってはいけない方法ですね。

Max sizeはカーネル次第ですがだいたい128KiBくらいらしく意外と小さいです。

環境変数にJSONを突っ込むというのはxaicronメソッドによるTest::mysqldの永続化でやったりするのですが*1、以下のように他にもいろいろやりだしたりするとある日突然うごかなくなって危険があぶないのではないかと思った次第です。

make test で Test::riak を永続化させる方法 - まいんだーのはてなブログ

cf. What is the maximum size of an environment variable value? - stackoverflow

*1:しかしlestrratさんによればこの方法は古いらしく、ourでもできるとのこと。

PbdPPbdP 2013/01/19 06:12 危険があぶないのはたしかですねえ
でもあぶないから危険は全部パス
だと作業は進まない
にしても128kibくらい…というのも微妙杉(_);

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/gfx/20130118/1358476166