Remove file in C++ under UNIX
Solution 1
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.
Solution 2
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");
}
Solution 3
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.
Solution 4
unlink is the correct way to do it.
Related videos on Youtube
tshepang
I do software development for a living and as a hobby. My favorite language is Rust, and I've used Python much in the past. My OS of choice is Debian.
Updated on July 09, 2022Comments
-
tshepang almost 2 years
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. -
Random832 over 11 yearsremove is in fact specified in POSIX to be equivalent to unlink for non-directories.