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 );
}

 

你可能感兴趣的:(命令)