cp 命令的编写

该程序模拟linux 的 cp 拷贝命令

打开,创建文件,读取和写文件使用系统的函数

 

/**
* cp.c
*/
#include
<stdio.h>
#include
<unistd.h>
#include
<fcntl.h>
#define BUFFERSIZE      4096
#define COPYMODE        0644
void errmsg(char *msg,char *msgn);
int main(int ac,char *av[])
{
int source_fp,target_fp;
char buff[BUFFERSIZE];
int n_chars; //fact read/write char number.
if(ac!=3)
        errmsg(
"please input source,target file",*av);
if(strcmp(av[1],av[2])==0)
        errmsg(
"source path equal target.","");
if((source_fp=open(av[1],O_RDONLY))==-1)
        errmsg(
"soruce error.",av[1]);
if((target_fp=creat(av[2],COPYMODE))==-1)
        errmsg(
"target error.",av[2]);
while((n_chars=read(source_fp,buff,BUFFERSIZE))>0)
{
        
if(write(target_fp,buff,n_chars)!=n_chars)
                errmsg(
"write target error.",av[2]);
}
if(n_chars==-1)
        errmsg(
"read source error.",av[1]);
if(close(source_fp)==-1 || close(target_fp)==-1)
        errmsg(
"close file error.","");\

return 0;
}
void errmsg(char *msg,char *msgn)
{
        fprintf(stderr,
"Error:%s\n",msg);
        perror(msgn);
        exit(
1);
}

 

posted on 2009-04-05 16:19  ringwang  阅读(461)  评论(0编辑  收藏  举报