【发布时间】:2011-08-07 09:28:15
【问题描述】:
可能的重复:
How to delete a directory and its contents in (POSIX) C?
这是在标准 Linux 环境中。
谢谢!
(我知道rmdir,但这不是我要找的。)
【问题讨论】:
可能的重复:
How to delete a directory and its contents in (POSIX) C?
这是在标准 Linux 环境中。
谢谢!
(我知道rmdir,但这不是我要找的。)
【问题讨论】:
system("rm -rf"); 有什么问题?
更新:由于评论者向他们的 cmets 表明很容易错过重点,让我展开澄清一下:
if (chdir(dirName) != 0)
return -1;
if (system("rm -rf .") != 0)
return -2;
【讨论】:
system,当你在结尾加上一个名字时,你可能会引入非常严重的漏洞......跨度>
{/,foo} 或 * ~ 这样的名字(尝试只删除备份副本时空格的经典错误)。
chdir()ing 到您要删除的目录,检查您是否在某个地方恢复正常,然后 system("rm -rf ."); 应该是安全的...
foo ; mailx -s 'I resign' my-boss这样的参数(标准命令注入)
您需要traverse the directory tree,使用nftw 进行文件树遍历。对于rm -r 示例,首先使用标志FTW_DEPTH 处理内容,然后检查FTW_D 以在目录上使用rmdir,而不是删除或取消链接。当然,这并不能保证您可以删除东西;这通常由包含目录的写权限决定。
【讨论】:
ftw 被更好的nftw 取代。