• ベストアンサー

duコマンドの置換えについて

こんばんは。 linux初心者で困っています。助けてください。 ディレクトリのサイズを得たいのですが、 組み込みなので、system関数でのduコマンドを実行すると、 エラーなどが拾えないため使用したくありません。 どうやったら、ディレクトリのサイズを得ることができますか? 具体的な設定方法をご教授願います。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

coreutils の du.c をざっと眺めると、fts(3)を使ってディレクトリの階層をたどって、ファイルを一つ一つチェックして足し合わせているようです。 便利な関数はなさそうですから、du.cを勉強して、ゼロからお書きになってはいかがですか?

参考URL:
ftp://ftp.kddlabs.co.jp/GNU/coreutils/
LEDdaisuki
質問者

お礼

返信ありがとうございます。 やっぱり、簡単に置き換える関数はないのですね。 それがわかっただけでも収穫です。 du.cを勉強してみます。 ありがとうございました。

LEDdaisuki
質問者

補足

本当に初心者でお恥ずかしい限りですが、 「coreutils の du.c」というのは、どこで手に入れることができますか? 申し訳ありませんが、教えていただけませんか?

その他の回答 (4)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.5

#1ですが・・・ >置き換える便利な関数はないということが分かりました。 #1~3の回答を見て、どこがどうわかったのでしょうか? 関数・・・といわれると、Perlやcなどなにかプログラム言語をつかっても いいのでしょうか?そうなると話しは別ですね そもそもsystem関数というともしかしてPHPだったりします? (Linux板への質問なので見落としていましたが・・・) エラーについても補足がないし、エラー処理についてもスルーしてるし 空回りしている質問なので回答しづらいです 質問するときにはもう少しわかりやすく状況を説明されたほうがよいと 思いますよ

LEDdaisuki
質問者

お礼

たびたびの回答ありがとうございます。 不慣れなもので不快な気持ちにさせてしまい、申し訳ありません。 肝心なことを書き忘れていました。 C言語での置き換えを考えていますので、du.cを勉強して チャレンジしてみたいと思います。

LEDdaisuki
質問者

補足

エラーについてですが、システムコールでduコマンドを実行すると、 実行することはできるのですが、エラーなどが起こった場合、 エラー情報がコンソールに出力されてしまい、内容が拾えないため システムコール以外の方法を探しておりました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#3 の参考 URL のところに coreutils-x.yy.tar.gz みたいなファイルがありますね. これが coreutils のソースファイル (を tar + gz でまとめたもの, しばしば tarball と呼ばれる) です. これを展開するとその中のどこかのディレクトリに du.c が現れるはずです. 「coreutils の du.c」というのはそれのことでしょう.

  • shukugawa
  • ベストアンサー率30% (80/264)
回答No.2

「>」ではなく「2>」、「>&」、「&>」のいずれかを使えば、エラーをリダイレクトできますが、 そういう意味ではない? 違ったらすみません。

LEDdaisuki
質問者

お礼

返信ありがとうございます。 置き換える便利な関数はないということが分かりました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>組み込みなので、system関数でのduコマンドを実行すると、 >エラーなどが拾えないため使用したくありません。 どういう組み込みで、duを使うとどういうエラーがでて それをどうしたいのか、意味が分からない・・・ 具体的な状況説明してください。

LEDdaisuki
質問者

お礼

返信ありがとうございます。 置き換える便利な関数はないということが分かりました。

関連するQ&A