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