linux c模拟是先cp命令

2260阅读 0评论2012-03-15 bill_cao
分类:C/C++

命令的实现

cp 命令的模拟实现

大家也都知道 cp 这个命令主要的作用就是把一个文件从一个位置复制到另一个位置。比如现在 /root 目录下有一个 test.txt 文件,如果我们用 cp test.txt test2.txt 命令的话,在同一个目录下面就会生成一个同样内容的 test2.txt 文件了。

那么 cp 命令是怎么实现的呢,我们看如下代码:

#include

#include

#include

#include

 

#define BUFFERSIZE 4096

 

void command_format(char *,char *);

 

int main(int argc,char *argv[])

{

         int fd_in,fd_out,n_chars;

         char buff[BUFFERSIZE];

        

         if(argc != 3)

         {

                   fprintf(stderr,"usage:%s source destination\n",*argv);

                   return 1;

         }

        

         if((fd_in=open(argv[1],O_RDONLY))==-1)

         {

                   command_format("cannot open",argv[1]);

         }

 

         if((fd_out=creat(argv[2],0644))==-1)

         {

                   command_format("cannot create",argv[2]);

         }

 

         while((n_chars=read(fd_in,buff,BUFFERSIZE))>0)

         {

                   if(write(fd_out,buff,n_chars)!=n_chars)

                   {

                            command_format("write error to",argv[2]);

                   }

         }

 

         if(n_chars==-1)

         {

                   command_format("read error from",argv[1]);

         }

 

         if(close(fd_in)==-1 || close(fd_out)==-1)

         {

                   command_format("error closing files"," ");

         }

         return 0;

}

 

void command_format(char *s1,char *s2)

{

         fprintf(stderr,"error:%s",s1);

         perror(s2);

}

该程序的主要实现思想是:打开一个输入文件,创建一个输出文件,建立一个 BUFFERSIZE 大小的缓冲区;然后在判断输入文件未完的循环中,每次读入多少就向输出文件中写入多少,直到输入文件结束。

命令实现的说明

让我来详细的讲述一下这个程序:

上一篇:函数指针和指针函数 指针数组
下一篇:linux c模拟实现rm命令