在UNIX下删除C ++中的文件

时间:2009-03-24 17:05:56

标签: c++ unix file-io posix

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

5 个答案:

答案 0 :(得分:28)

是的 - C ++标准将这些东西留给了操作系统,所以如果你在Linux(或任何POSIX系统)上,unlink()就是你所拥有的。

C标准提供remove(),你可以试试,但要记住它的behavior is unspecified除了'常规文件'以外的其他内容,所以它并没有真正保护你不要进入特定于平台的文件系统详细信息(链接等)。

如果您想要更高级别,更强大且更便携的内容,请查看Boost Filesystem

答案 1 :(得分:14)

标准包含一个名为remove的功能。虽然我更喜欢boost.filesystem(如果我已经使用过boost)。

#include <cstdio>

int main() {
    std::remove("/home/js/file.txt");
}

答案 2 :(得分:2)

unlink()POSIX标准定义,因此将存在于任何POSIX兼容系统上,并且还存在许多不兼容POSIX的系统。

答案 3 :(得分:1)

取消链接是正确的方法。

答案 4 :(得分:0)

请注意,最近的内核还提供unlinkat。如果目录本身有文件描述符,则此函数比unlink快。