tar展開時のメモリ使用量について質問します。 C言語で、fork、execでtarによるアーカイブファイルの展開を行おうとしています。 作成したプログラムを動作させる環境のRAM容量が少なく、

tar展開時のメモリ使用量について質問します。 C言語で、fork、execでtarによるアーカイブファイルの展開を行おうとしています。 作成したプログラムを動作させる環境のRAM容量が少なく、 動作が不安定です。 ※並列で別の複数のプロセスが動いており、それぞれメモリを獲得しています。 tarでメモリ使用量を最小限に押さえて実行する方法はないでしょうか? tarファイルは200MB程度であり、展開前のファイルも展開先もHDDで、HDDの空き容量は十分にあります。 ※tar展開時に必要なメモリ量はtarアーカイブファイル内の最大ファイルサイズだと認識していますが、あっているでしょうか? あっている場合、数KBずつ読んで書く手段はないでしょうか?

パソコン1,049閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

解決策の提示でなくてすみません。 >tar展開時に必要なメモリ量はtarアーカイブファイル内の最大ファイルサイズだと認識していますが、あっているでしょうか? まずここが気になったので、実験してみました。 (仮想環境ですが)搭載メモリ96MB、スワップ256MB、GNU tar 1.23、kernel 2.6.32の環境で、700MB程度のisoファイルを丸っとtarで固めたファイルを展開させてみました。 結果、新たにswapを発生することもなく、問題なく展開完了しました。その際のメモリ使用量は5MBほどで一定でした。 #作成は試してませんが、標準入力を受け取れることからもメモリ肥大は考えにくいのでパスしました >C言語で、fork、execでtarによるアーカイブファイルの展開を行おうとしています。 もしもメモリが溢れているのであれば、考えられる可能性としてはCから呼び出す際に出力を貯めこんでるとか・・・なにか?(すみません 端末からのコマンド実行でも同様かどうか確認されると良いかもしれませんね。 >数KBずつ読んで書く手段はないでしょうか? あるいはtarでは入出力のブロックサイズ指定が可能なので、-b(--block-size)オプションを指定してみてはどうでしょうか。 http://linuxjm.sourceforge.jp/html/GNU_tar/man1/tar.1.html

ThanksImg質問者からのお礼コメント

情報ありがとうございます! 頂いた情報で色々と試してみようと思います。

お礼日時:2013/7/3 22:59