C言語で/home/testのディレクトリ配下の ファイルを全て削除したい場合は どうすればいいですか? System関数を使ってrmのLinuxコマンドを
C言語で/home/testのディレクトリ配下の ファイルを全て削除したい場合は どうすればいいですか? System関数を使ってrmのLinuxコマンドを 使えばアスタリスクが 使えるので簡単そうですが それ以外方法で、 一括削除するような方法はないでしょうか? (その時にアスタリスクを使えるなら簡単そうですが) OS:RadHat Cコンパイラ:gcc
ベストアンサー
Cの標準ライブラリに、ファイルシステムの操作 は、 ないです。 なんらかの環境依存手段になる。 unix系OSのようだから、POSIX標準の関数は、あるでしょう。 https://linuxjm.osdn.jp/html/LDP_man-pages/man3/remove.3.html remove 使えば rm -rf /home/test 相当はできます。サブディレクトリごと消えるので、 事後に mkdir すれば、結果オーライでは? そもそも、unixシェルでの ワイルドカード 処理は、 ・シェル が行ってるもの。 C向け関数でそんなことやるものは、ないと思う。 どうしても /home/test は消したくなく、その直下 の ファイルorディレクトリを対象にしたいのなら、 自分でディレクトリ下をサーチし、その個々につき前記 remove() 使えば、自力再帰 まではしなくて済むと思う。 ディレクトリ情報のサーチは、 https://linuxjm.osdn.jp/html/LDP_man-pages/man3/opendir.3.html https://linuxjm.osdn.jp/html/LDP_man-pages/man3/readdir.3.html https://linuxjm.osdn.jp/html/LDP_man-pages/man3/closedir.3.html P.S. system("rm -rf /home/test/*"); でいいじゃん、と思いますけど。 あるいは、もっと親切な インタプリタ言語使う。 事情があるのかもしれませんが。
質問者からのお礼コメント
ありがとございます。
お礼日時:1/29 2:53