你们通常如何删除 Linux 操作系统上的文件?我正在考虑使用unlink
函数调用,但我想知道您是否有更好的主意,因为 C++ 标准没有提及文件删除操作并且它是系统相关的。
Sasha
问问题
43705 次
5 回答
31
是的——C++ 标准把这些东西留给了操作系统,所以如果你在 Linux(或任何 POSIX 系统)上,unlink()
这就是你所拥有的。
C 标准提供remove()
,您可以尝试,但请记住,它的行为对于“常规文件”以外的任何内容都未指定,因此它并不能真正保护您免于进入特定于平台的文件系统详细信息(链接等) .
如果您想要更高级别、更健壮和更便携的东西,请查看Boost Filesystem。
于 2009-03-24T17:07:16.403 回答
19
该标准包括一个名为remove的函数。虽然我更喜欢boost.filesystem
那个(如果我已经使用了 boost)。
#include <cstdio>
int main() {
std::remove("/home/js/file.txt");
}
于 2009-03-24T17:10:46.737 回答
2
unlink()
由POSIX标准定义,因此将存在于任何与 POSIX 兼容的系统上,并且存在于相当多的不兼容 POSIX 的系统上。
于 2009-03-24T17:13:36.467 回答
1
取消链接是正确的方法。
于 2009-03-24T17:07:36.837 回答
0
请注意,最近的内核还提供unlinkat
. 这个函数比unlink
目录本身有文件描述符要快。
于 2012-05-15T17:26:28.373 回答