電子書籍の厳選無料作品が豊富!

開発したアプリケーションで、あるディレクトリにファイルを作成し、
処理が終わったらそのディレクトリ中に作成したファイルを削除する
という処理を行っています。

処理を行っている最中に「No such File or Directory」というエラーが
出ましたが、次の処理では問題なくファイルの作成、削除の処理が
うまく行われていました。

作業用に使っているディレクトリ名を仮に「PDF」という名前とすると、
lsコマンドで見てみると、PDFディレクトリのサイズが、1507328 となっていました。
(ディレクトリのサイズは、4092のことが多いと考えます。)

「ディレクトリエントリ」というものがあって、たとえディレクトリ内のファイルを
消去したとしても、ディレクトリ内にファイルを作成した場合は、
ディレクトリのサイズは大きくなるということまでは理解できたのですが、
なぜ、「No such File or Directory」が出てしまったのかを調べたいです。

たとえば
(1)Linux(32bit)では、ディレクトリエントリのサイズに上限がある
(2)Linux(32bit)では、ディレクトリエントリのサイズが大きいと、さらにディレクトリの
 サイズを拡張する場合は時間がかかる場合がある
などのことがあるなど、ご存知の方はいらっしゃらないでしょうか。

Linuxは、Redhat 5.7(32bit)を使っています。

憶測としては、PDFディレクトリ下にファイルを作成した際に、ディレクトリエントリの
サイズを拡張しようとして、少し時間がかかり、そのためにファイルが作成されずに
アプリケーション側で作成したファイルを参照しようとした際にファイルを見つける
ことができずに「No such File or Directory」とOSが返してきたのではないかと
考えています。

どうぞ、識者の方、ご教示いただければ幸甚です。
よろしくお願いいたします。

A 回答 (1件)

「ディレクトリサイズ」と「ディレクトリエントリサイズ」がごっちゃになっているようですね。



ディレクトリエントリの集合体がディレクトリです。

>PDFディレクトリのサイズが、1507328 となっていました。(ディレクトリのサイズは、4092のことが多いと考えます。)

ディレクトリに登録されいるファイルが多いと(ディレクトリエントリの数が多いと)、ディレクトリサイズは大きくなります。こういうのは珍しいことでは無いです。

>(1)Linux(32bit)では、ディレクトリエントリのサイズに上限がある
>(2)Linux(32bit)では、ディレクトリエントリのサイズが大きいと、さらにディレクトリのサイズを拡張する場合は時間がかかる場合がある

ディレクトリもファイルの一種なので、そのファイルシステムでのファイルサイズの上限までの大きさです。例えば2GBとか。
ディレクトリが大きくなるのは、普通のファイルにどんどん追加書きしてファイルが大きくなるのと同じだけの時間が掛かります。

エラーが出る原因は、プログラムの処理内容が書いてないので、誰にも何とも答えられません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!