你们在Linux操作系统上通常如何删除文件?我正在考虑使用unlink
函数调用,但我想知道是否有更好的方法,因为C++标准未提及文件删除操作且它是依赖于系统的。
没错 —— C++标准将这些内容留给操作系统处理,因此如果您使用Linux(或任何POSIX系统),则可以使用unlink()
。
C标准提供了remove()
,您可以尝试使用它,但请记住,其行为对于除“常规文件”以外的其他内容是未指定的,因此它并不能使您摆脱平台特定的文件系统细节(链接等)。
如果您想要更高级、更健壮和更可移植的方案,请查看Boost Filesystem。
标准库中包含一个名为remove的函数,可以完成这个任务。尽管如果我已经在使用boost的话,我更喜欢使用boost.filesystem
来完成这个任务。
#include <cstdio>
int main() {
std::remove("/home/js/file.txt");
}
使用unlink是正确的方法。
unlinkat
。如果您在目录本身上有一个文件描述符,则此函数比unlink
更快。