質問: tar展開時のメモリ使用量について質問します。 C言語で、fork、execでtarによるアーカイブファイルの展開を行おうとしています。 作成したプログラムを動作させる環境のRAM容量が少なく、
回答: 解決策の提示でなくてすみません。 >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)オプションを指定してみてはどうでしょうか。