我尝试使用以下方法从c程序中删除文件夹中的所有文件:
execl("/bin/rm","/media/sda1/*",0,0,0,0,0,0,0,0,0);
但我得到以下失败: rm:无法删除' / media / sda1 / *':没有这样的文件或目录,尽管此文件夹中有文件。 我们如何使用execv系列删除所有文件或复制所有文件(从一个文件夹到另一个文件夹)?有没有人有任何想法?
谢谢, 然
答案 0 :(得分:4)
问题是由您使用的glob
模式/media/sda1/*
引起的:请注意星号,shell会扩展到该文件夹中所有非隐藏文件的列表。如果您将其直接传递给rm
,它会尝试删除名为*
的文件夹。
如果您不想手动迭代文件夹中的所有文件,则需要在shell中启动该命令,这将为您扩展 glob 模式。 / p>
您可以使用
execl("/bin/bash","-c 'rm -rf /media/sda1/*'",0,0,0,0,0,0,0,0,0);
......为此。一个不错的选择是使用system()
隐式启动shell中的命令:
system("rm -rf /media/sda1/*");
更多关于: