25

你们通常如何删除 Linux 操作系统上的文件?我正在考虑使用unlink函数调用,但我想知道您是否有更好的主意,因为 C++ 标准没有提及文件删除操作并且它是系统相关的。

4

5 回答 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 回答