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

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

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

C标准提供了remove() ,你可以试试,但是请记住,它的行为对于“常规文件”以外的任何东西都是未指定的,所以它并不真正阻止你进入平台特定的文件系统细节(链接等等)。

如果你想要更高级,更强大,更便携的东西,请查看Boost Filesystem 。

该标准包含一个名为remove的函数。 虽然我宁愿boost.filesystem (如果我已经使用boost)。

 #include <cstdio> int main() { std::remove("/home/js/file.txt"); } 

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

取消链接是正确的做法。

请注意,最近的内核也提供unlinkat 。 如果你在目录本身有一个文件描述符,这个函数比unlink快。