Remove file in C++ under UNIX

前端 未结 5 941
悲&欢浪女
悲&欢浪女 2021-02-07 00:46

How do you guys typically delete files on Linux OS? I am thinking of using the unlink function call, but I wonder if you have a better idea, as the C++ standard has

相关标签:
5条回答
  • 2021-02-07 01:15

    The Standard includes a function called remove which does that. Though i would prefer boost.filesystem for that (if i already use boost anyway).

    #include <cstdio>
    
    int main() {
        std::remove("/home/js/file.txt");
    }
    
    0 讨论(0)
  • 2021-02-07 01:15

    Note that recent kernels also offer unlinkat. This function is faster than unlink if you have a file descriptor on the directory itself.

    0 讨论(0)
  • 2021-02-07 01:24

    Yep -- the C++ standard leaves this stuff up to the OS, so if you're on Linux (or any POSIX system), unlink() is what you've got.

    The C standard provides remove(), which you could try, but keep in mind that its behavior is unspecified for anything other than a 'regular file', so it doesn't really shield you from getting into platform-specific filesystem details (links, etc).

    If you want something higher-level, more robust, and more portable, check out Boost Filesystem.

    0 讨论(0)
  • 2021-02-07 01:28

    unlink is the correct way to do it.

    0 讨论(0)
  • 2021-02-07 01:31

    unlink() is defined by the POSIX standards, and hence will exist on any POSIX compatible system, and on quite a few that aren't POSIX compatible too.

    0 讨论(0)
提交回复
热议问题