系统相关
首页 > 系统相关> > 实现linux cp命令

实现linux cp命令

作者:互联网

cp src.c(源文件) des.c(目标文件)
一、思路:
1.打开src.c(源文件)
2.把src.c(源文件) 的内容读到buf中
3.打开并创建des.c(目标文件)
4.把buf写到des.c(目标文件)中
5.close 关闭src.c(源文件)和des.c(目标文件)

二、代码实现
(1)先写一个测试demo

argc为参数的个数是int型
argv是数组指针(二级指针)指针的每一项都是一个数组在这里插入图片描述

#include <stdio.h>


int   main(int argc,char **argv)
{

       printf("totol params:%d\n",argc);
       printf("No1.  params:%s\n",argv[0]);
       printf("No2.  params:%s\n",argv[1]);
       printf("No3.  params:%s\n",argv[2]);

       return 0;
}

在这里插入图片描述
(2)拷贝文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int   main(int argc,char **argv)
{
         int   fdSrc;//源文件
	     int   fdDes;//目标文件

         char  *readbuf=NULL;
	
	
	 if(argc != 3)/*判断参数的个数*/
        {
	       printf("pararm error\n");
	       exit(-1);
	    }

    
	 fdSrc=open(argv[1],O_RDWR);
     int  size=lseek(fdSrc,0,SEEK_END);
    /*把光标从开头定位到文件的尾巴*/
    /*读取之前计算文件的大小*/
    
	 lseek(fdSrc,0,SEEK_SET);
     /*读文件的时候要重新定位*/
     
	 readbuf=(char *)malloc(sizeof(char)*size+8);
     /*开辟空间*/

	 int  n_read=read(fdSrc,readbuf,size);
    /*读取源文件*/
    
	 fdDes=open(argv[2],O_RDWR|O_CREAT,0600);
     /*打开目标文件*/
          
	 int n_write=write(fdDes,readbuf,strlen(readbuf));
    /*往目标文件写源文件的内容*/
      
       
	 close(fdSrc);
	 close(fdDes);

     return 0;
}

运行结果:两个文件的内容一致

标签:文件,include,fdSrc,int,argv,源文件,命令,linux,cp
来源: https://blog.csdn.net/weixin_42900834/article/details/113249145