四、Linux文件编程小应用1—在linux下实现自己的cp指令

目录

Linux系统cp指令的介绍

实现一个自己的cp指令

代码演示

运行结果:


Linux系统cp指令的介绍

cp指令是用于复制文件或目录的指令,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。

cp 命令主要用于拷贝文件,用法,cp    demo1.c   /tmp/new.txt 

实现一个自己的cp指令

用linux文件编程实现一个cp指令

代码演示

#include <unistd.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,char **argv)
{
        int fd;
        int n_read;
        int n_lseek;
        char *buf = NULL;

        if(argc != 3){
                puts("not argc");
                exit(-1);
        }

//1.open
        fd = open(argv[1],O_RDWR);  //可读可写,打开被拷贝的文件,
        if(fd == -1){               //判断是否成功打开文件
                puts("Not find argv[1]");
                exit(-1);
        }

        n_lseek = lseek(fd,0,SEEK_END);    //计算被拷贝文件的大小
        lseek(fd,0,SEEK_SET);               //将读写指针(光标)指向文件头
        buf = (char *)malloc( sizeof(char)*n_lseek ); //根据文件计算的大小,给缓冲区开辟对应字节空间   

//2.read 
        n_read = read(fd,buf,n_lseek);   //将被拷贝文件的内容读取到,缓冲区buf。
//3.close argv[1]
        close(fd);                        //关闭被拷贝文件

//3.open                                                
        fd = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);  //可读可写方式,打开拷贝文件,如果没有就创建该文件,吧打开的拷贝文件内容进行清空O_TRUNC。
        if(fd == -1){                     //判断是否打开/创建成功
                puts("Not find argv[2]");
                exit(-1);
        }


//4.write
        write(fd,buf,strlen(buf));    //将缓冲区的buf数据内容写到拷贝文件
        close(fd);                    //关闭拷贝文件

        printf("strlen(buf) =  %d\n ",(int )strlen(buf)); //被拷贝文件内容数据读取到了缓冲区buf,打印buf缓冲区的字符数据,

        return 0;
}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值