Linux OSで通常どのようにファイルを削除しますか? unlink
関数呼び出しを使用することを考えていますが、C++標準にはファイル削除操作についての言及がなく、システムに依存するため、より良いアイデアがあるかどうか疑問に思います。
そうです-C++標準はこれをOSに任せているので、Linux(または任意のPOSIXシステム)を使用している場合は、 unlink()
が得られます。
C標準は remove()
を提供します。これを試すことはできますが、「通常のファイル」以外の場合は 動作は指定されていません であることに注意してください。そのため、プラットフォーム固有のファイルシステムの詳細(リンクなど)に入るのを実際に防ぐことはできません。
より高レベルで、より堅牢で、より移植性の高いものが必要な場合は、 Boost Filesystem を確認してください。
標準には、それを行う remove という関数が含まれています。そのためにはboost.filesystem
を好みますが(とにかくすでにブーストを使用している場合)。
#include <cstdio>
int main() {
std::remove("/home/js/file.txt");
}
unlink()
は [〜#〜] posix [〜#〜] 標準によって定義されているため、POSIX互換システムに存在し、そうでないものもかなりあります。 POSIX互換でもあります。
リンク解除はそれを行う正しい方法です。
最近のカーネルもunlinkat
を提供していることに注意してください。ディレクトリ自体にファイル記述子がある場合、この関数はunlink
よりも高速です。