- #include <stdio.h>
-
#include <fcntl.h>
-
#include <unistd.h>
-
#include <sys/stat.h>
-
#include <string.h>
-
-
bool cp(int fdsrc,int fddest)
-
{
-
char buff[1024];
-
int relen=0,wrlen=0;
-
while ((relen=read(fdsrc,buff,sizeof(buff))) > 0)
-
{
-
if (write(fddest,buff,relen)==-1)
-
{
-
perror("error:");
-
return false;
-
}
-
memset(buff,0,sizeof(buff));
-
}
-
if (relen==-1)
-
{
-
perror("error:");
-
return false;
-
}
-
/*
-
*程序退出后交给内核关闭文件,
-
*对于只打开那么两个文件运行完就退出的程序
-
*显式关闭是没有必要的,无论怎样,内核都要做这一步~~~
- *
-
*/
-
// close(fdsrc);
-
// close(fddest);
-
return true;
-
}
-
-
int main(int argc,char **argv)
-
{
-
if (argc<3)
-
{
-
printf("argument too less");
-
}
-
-
int fdsrc,fddest;
-
if ((fdsrc=open(argv[1],O_RDONLY))==-1)
-
{
-
perror(argv[1]);
-
return 0;
-
}
-
if ((fddest=open(argv[2],O_WRONLY|O_TRUNC|O_CREAT,0644))==-1)
-
{
-
perror(argv[2]);
-
return 0;
-
}
-
if(cp(fdsrc,fddest))
-
{
-
printf("complete !\n");
-
return 0;
-
}
-
return 0;
-
}
这是最简单的版本,老代码了,改天再弄个好点的出来玩玩,待续^^
阅读(1362) | 评论(0) | 转发(0) |