天下

记录修行的印记

loop cp 代码

//测试工具
#include <unistd.h>
#include 
<cstring>
#include 
<cstdlib>
#include 
<string>
#include 
<sys/socket.h>
#include 
<netinet/tcp.h>
#include 
<sys/ioctl.h> 
#include 
<netinet/in.h>
#include 
<arpa/inet.h>
#include 
<dirent.h>    
#include 
<sys/time.h>
#include 
<assert.h>
#include 
<errno.h>
#include 
<sys/types.h>
#include 
<sys/stat.h>
#include 
<fcntl.h>
#include 
<assert.h>

using namespace std;

void Path_AddSlash(char* pszPath)
{
    assert(pszPath
!=NULL);
#ifdef WIN32
    PathAddBackslash(pszPath);
#else
    
int nLen = strlen(pszPath);
    
if (pszPath[nLen-1]!='/')
    {
        pszPath[nLen] 
= '/';
        pszPath[nLen
+1= '\0';
    }
#endif
}


#ifndef WIN32
unsigned 
int GetTickCount()
{
    
struct timeval tv;
    
if(gettimeofday(&tv, NULL)!= 0)
        
return 0;
    
return (tv.tv_sec * 1000)+(tv.tv_usec/1000); 
}
#endif

string Path_GetBaseName(const string& strPath)
{
    
const char* pszPath = strPath.c_str();
#ifdef WIN32
    
char name[256];
    
char ext[256];
    _splitpath(pszPath,NULL,NULL,name,ext);
    strcat(name,ext);
    
return string(name);
#else
    
return string(basename(pszPath));
#endif
}

// 目录是否存在
bool IsDirectory(char *p_dir)
{
    DIR 
*dir = NULL;

    dir 
= opendir(p_dir);
    
if( NULL == dir )
    {
        
return false;
    }
    
else
    {
        closedir(dir);
        
return true;
    }
}

long GetLocalFileSize(const char* szFileName)
{
    
struct stat f_stat;
    
if (stat(szFileName, &f_stat) == -1) {
        
return -1;
    }
    
return (long)f_stat.st_size;
}


int main(int argc,char* argv[])
{
    
char szCmd[512];
    
char szDstFileName[256];
    
char szDir[256];

    
if (argc!=5)
    {
        printf(
"Usage:%s <filename> <dirpath> <begin> <end> \r\n",argv[0]);
        
return 255;
    }
    
    
char* pszFileName = argv[1];
    
int nBegin    = atoi(argv[3]);
    
int nEnd    = atoi(argv[4]);

    strcpy(szDir,argv[
2]);

    
if (GetLocalFileSize(pszFileName) < 0)
    {
        printf(
"error:<%s> is not exist \r\n",pszFileName);
        
return 255;
    }
    
    
if (!IsDirectory(szDir))
    {
        printf(
"error:<%s> is not directory \r\n",szDir);
        
return 255;
    }
    
    unsigned 
int dwBeginTime = GetTickCount();

    Path_AddSlash(szDir);
    
char* pszExtName = strchr(pszFileName,'.');
    
if (pszExtName==NULL)
    {
        pszExtName 
= (char*)"";
    }

    
int ret = 0;
    
int i = 0;
    
for (i=nBegin;i<nEnd;i++)
    {
        sprintf(szCmd,
"cp %s %s%06d%s",pszFileName,szDir,i,pszExtName);
        puts(szCmd);
        ret 
= system(szCmd);
        
if (ret!=0)
        {
            
break;
        }
    }
    unsigned 
int dwEndTime = GetTickCount();
    puts(
"\r\n-------------------------------------------------------------------");
    printf(
"from:%d,to:%d \r\n",nBegin,nEnd);
    printf(
"begin time:%u,end time:%u \r\n",dwBeginTime,dwEndTime);
    printf(
"elapse ms:%u \r\n",dwEndTime - dwBeginTime);
    
return 0;
}

posted on 2012-12-06 14:37 天下 阅读(228) 评论(0)  编辑 收藏 引用 所属分类: Linux编程


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(4)

随笔分类(377)

随笔档案(327)

链接

最新随笔

搜索

最新评论