Linux系统编程—文件—实现cp指令

这篇博客介绍了如何利用C语言在Linux环境下实现`cp`指令的功能。首先通过`argc`和`argv`获取命令行参数,然后分别打开源文件(src.c)和目标文件(des.c)。程序读取源文件内容到缓冲区,接着创建并写入目标文件,最后关闭文件。代码中使用`O_TRUNC`标志确保目标文件内容被覆盖。成功运行后,目标文件内容与源文件一致。
摘要由CSDN通过智能技术生成

Linux编程实现cp指令

linux正常cp是在输入指令:cp src.c des.c (在这里src.c是源文件,des是需要生成的目标文件)

这里有三个参数 所以argc为3,是一个int型。argv是一个二级指针,是一个数组的指针,意思是这个指针的每一项都是一个数组,在这里
cp是argc[0]
src.c是argv[1]
des.c是argv[2]

#include <stdio.h>

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

 printf("total program:%d\n",argc);

 printf("No.1 program:%s\n",argv[0]);
 printf("No.2 program:%s\n",argv[1]);
 printf("No.3 program:%s\n",argv[2]);

 return 0;
}

这里编程实现,可以看到printf打印出来的效果
在这里插入图片描述

cp指令的思路

a. 打开创建src.c
b.读src.c到buf中
c. 打开创建des.c
d .将buf写入des.c
e .close关闭两个文件

#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("param error\ni");
                exit(-1);
        }

        fdsrc=open(argv[1],O_RDWR);

        int size=lseek(fdsrc,0,SEEK_END);
        lseek(fdsrc,0,SEEK_SET);

        readbuf=(char *)malloc(sizeof(size)+8);
        int n_read=read(fdsrc,readbuf,size);

        fddes=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);
        int n_write=write(fddes,readbuf,strlen(readbuf));

        close(fdsrc);
        close(fddes);
        return 0;
}

代码用到了打开创建文件用到O_TRUNC,用来如果这个文件中本来是有内容的,完全覆盖。
在这里插入图片描述

在这里插入图片描述
打开新文件,可以看到新文件内容与被复制文件内容完全一直,运行自己的代码实现了cp指令。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是光哥呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值