2009-03-24 16 views
20

あなたはどのようにして一般にLinux OSでファイルを削除しますか?私はunlink関数呼び出しを使用することを考えていますが、C++標準はファイルの削除操作についての言及がなく、システムに依存しているので、より良い考えがあるのだろうかと思います。UNIXのC++でファイルを削除する

答えて

27

Yep - C++標準ではこのようなことがOSに任されているので、Linux(またはPOSIXシステム)を使用している場合はunlink()が得られます。

C標準では、試してみることができますが、behavior is unspecifiedが「通常のファイル」以外のものであることを念頭に置いているため、プラットフォーム固有のファイルシステムの詳細(リンク、など)。

もっと高いレベル、より堅牢で可搬性の高いものをお望みなら、Boost Filesystemをチェックしてください。

+0

私はすべてのコード移植性の問題でremove()を使用しています。 –

+0

削除は実際にはPOSIXでは非ディレクトリのunlinkと同等であると指定されています。 – Random832

1

unlinkは正しい方法です。

13

標準には、removeという機能があります。私はそれのためにboost.filesystemを好むだろうが(もし私がすでにブーストを使用していれば)。

#include <cstdio> 

int main() { 
    std::remove("/home/js/file.txt"); 
} 
2

unlink()POSIX規格によって定義され、したがって任意のPOSIX互換システムで、あまりにも互換性をPOSIXされないかなりの数の上に存在します。

0

最近のカーネルでもunlinkatが提供されています。この機能は、ディレクトリ自体にファイル記述子がある場合、unlinkより高速です。

関連する問題