LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1023|回复: 6

谁有拷贝目录及其子目录和文件的程序??参考

[复制链接]
发表于 2006-4-27 23:21:30 | 显示全部楼层 |阅读模式
熊猫是初学者啦~~最近在学写一些小程序

在网上也看到过单纯的拷贝文件的程序,但要是涉及到多级目录的拷贝,就有好些细节不清楚的了。

所以还请大家帮帮忙,有这样的程序的话,发给熊猫学习学习,谢谢大家:)
发表于 2006-4-28 00:11:33 | 显示全部楼层
递归啊,或者看cp的源代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-28 09:03:53 | 显示全部楼层

cp的源代码在哪里看??

我在gnu上下过一个源代码包,但是都运行不出来,是版本不一样还是别的什么原因阿 ??

大概的程序思路我是有的,但细节问题,比如属性这类的(还有其它一些我没认识到的)因为经验不足,可能很多该考虑的都考虑不到,所以想看看前辈们写的程序学习学习

大家有的话就帮个忙啦,熊猫谢谢大家:)
回复 支持 反对

使用道具 举报

发表于 2006-4-28 11:09:08 | 显示全部楼层
cp好像是在叫coreutils的包当中吧,你自己搜一下,肯定可以找到与你的发行版中一致的源代码。
回复 支持 反对

使用道具 举报

发表于 2006-4-28 11:24:06 | 显示全部楼层
我建议要想看源代码的话,还是看busybox的源代码,比较小,不至于把自己吓倒
回复 支持 反对

使用道具 举报

发表于 2006-4-28 19:02:21 | 显示全部楼层
从我的一个程序COPY过来的.<<UNIX环境高级编程>>有说
void mapinfo::myfindfile(list<string> *needfile)   //find file function
{
                DIR *sp;
                struct dirent *dirp;
                struct stat buf;
                char *pathname,*newpathname,*ptr,*fullname,*tempstr;
                long lens,newlen,fulllen,templen;
                string newline;
                        ptr=fullpath+strlen(fullpath);
                        *ptr++='/';
                        *ptr=0;
                sp=opendir(fullpath);
                if(sp!=NULL)
                    {
                      while((dirp=readdir(sp))!=NULL)
                           {
                             strcpy(ptr,dirp->d_name);
                             if(lstat(fullpath,&buf)<0)
                                  {
                                    continue;
                                           }
                                  if(S_ISDIR(buf.st_mode))
                                    {
                     if(strcmp(dirp->d_name,".")==0 || strcmp(dirp->d_name,"..")==0)
                                             {
                                               continue;
                                              }
                                         myfindfile(needfile);
                                    }
                                  if(S_ISREG(buf.st_mode))
                                         {
                                if(isfile(dirp->d_name)==true)
                                              {
                                           newline=fullpath;
                //                            cout<<newline<<endl;
                                           needfile->createlist(newline);
                                              }
                                          }
                                       else
                                           {
                                              continue;
                                                 }
                             }
                         }
                if(closedir(sp)<0)
                  {
                      printf("close dir failed");
                  }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-29 00:01:34 | 显示全部楼层
谢谢大家!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表