从C代码中删除文件

时间:2011-11-18 02:04:50

标签: c

我必须删除C代码中的几百个文件。我在循环中使用“删除”。有没有比使用“删除”更快的方法呢?我问这个是因为我不能使用“删除”给野人。

2 个答案:

答案 0 :(得分:10)

不,没有比在POSIX系统上使用remove() - 或unlink()更快的方法 - 在循环中。

系统rm命令也是这样做的 - 至少在命令行上给出名称的简单非递归情况下。 shell扩展了元字符,并且rm(in)着名地删除了它被告知要删除的内容,而不知道在命令行上使用的灾难性*.*表示法。 (在递归的情况下,它使用诸如nftw()之类的函数以深度优先顺序遍历目录结构,并重复调用unlink()以删除文件,并rmdir()删除(glob() now-empty)目录。)

POSIX提供函数(wordexp()fnmatch())来生成(POSIX)shell中使用的元字符的文件名列表,加上{{3}}以查看名称是否与图案。

答案 1 :(得分:0)

您可以使用system生成一个可以为您进行*扩展的shell。这可能不会比在循环中调用unlink()更快地运行,因为它必须生成一个shell(启动一个新进程)。但是编码会更容易。