2012年(41)
分类: C/C++
2012-03-15 15:11:41
命令的实现
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 大小的缓冲区;然后在判断输入文件未完的循环中,每次读入多少就向输出文件中写入多少,直到输入文件结束。
命令实现的说明
让我来详细的讲述一下这个程序: