用C语言 写unix 的 cp指令 30
需要运行的是./cpfiledir把一个文件复制到一个目录里./cpdir1dir2把一个目录里的所有文件复制到另外一个目录里谁能帮我看看谢啦就是判断输入的第二个参数是文...
需要运行的是./cp file dir 把一个文件复制到一个目录里
./cp dir1 dir2 把一个目录里的所有文件 复制到另外一个目录里
谁能帮我看看 谢啦
就是判断输入的第二个参数是文件 还是 目录 展开
./cp dir1 dir2 把一个目录里的所有文件 复制到另外一个目录里
谁能帮我看看 谢啦
就是判断输入的第二个参数是文件 还是 目录 展开
3个回答
展开全部
你问的不是很清楚。
cp命令的话
cp dir1 dir2肯定不行的嘛,拷贝目录要加-R 或者-a参数的。
如果是自己写程序实现cp命令的话,用stat, 或者 lstat 或者 fstat函数。
具体查manpage.
cp命令的话
cp dir1 dir2肯定不行的嘛,拷贝目录要加-R 或者-a参数的。
如果是自己写程序实现cp命令的话,用stat, 或者 lstat 或者 fstat函数。
具体查manpage.
追问
恩 我用的stat写的
想用下面这个方法判断 目标文件夹里 有没用和要复制的文件同名的 来防止文件被覆盖 不过遇见空文件夹会出现错误
while((direntp = readdir(dir_ptr))!=NULL || fileExist != 1){
//想在这加个判断 如果文件是空的 直接跳出 要怎写啊
if(strcmp(agv[1], direntp->d_name)==0){
fileExist++;
}
}
追答
没看你的全部程序不好说。
不过感觉对 源文件夹是否为空的判断最好不要 跟 目标文件夹里是否有重名 混在一起。
前面先进行文件是否为空的判断,比如:
while ((dirp = readdir(dir)) != NULL)
{
if (strncmp (dirp->d_name, ".", 1) && strncmp (dirp->d_name, "..", 2))
{
emptyflag = 0;
break;
}
}
if (!emptyflag)
{
//not empty, you operation
//这样判断了是否为空还跳过了非空目录中的. 和..
while ((dirp = readdir(dir)) != NULL)
{
printf ("%s\n", dirp->d_name);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询