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 no mention of file deletion operation and it is system dependent.
5 Answers
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.

- 58,354
- 15
- 89
- 96
-
I use remove() in all my code - portability matters to some of us. – Mar 24 '09 at 17:19
-
remove is in fact specified in POSIX to be equivalent to unlink for non-directories. – Random832 Aug 29 '12 at 17:24
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");
}

- 496,577
- 130
- 894
- 1,212
Note that recent kernels also offer unlinkat
. This function is faster than unlink
if you have a file descriptor on the directory itself.

- 3,348
- 3
- 19
- 26