Linux系统编程2--实现cp指令

Linux系统编程2–实现cp指令

1、实现cp指令

cp src.c des.c  //scr 源; des 目标;

1.1、思路

  • a、打开 src.c ;

  • b、读 srcbuf

  • c、打开/创建 des.c

  • d、将 buf 写入到 des.c

  • e、close 两个文件

1.2、要点

  • main函数里面要加参数
int main(int argc, char **agrv) //一般为3个参数,不是的话则发生了错误
  • argv[1] 是指 src
  • argv[2] 是指 des
int size = lseek(fdSrc, 0, SEEK_END);   //计算 src 大小
lseek(fdSrc,0,SEEK_SET);				//光标返回至文件头
fdDes = open(argv[2], O_RDWR|O_CREAT|O_TRUNC,0600);
//c、打开创建 des
//O_CREAT:没有就creat;   O_TRUNC:把原来的都干掉

1.3 程序

#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; //源fd
	int fdDes; //目标fd

	char *readBuf = NULL;

	if(argc != 3)//参数不为3,终止程序;
	{
		printf("pararm error\n");
		exit(-1);
	}

	fdSrc = open(argv[1],O_RDWR);						//a、打开src.c
	int size = lseek(fdSrc, 0, SEEK_END);
    //计算源fd 大小
	lseek(fdSrc,0,SEEK_SET);
    //光标返回至文件头

	readBuf = (char *)malloc(sizeof(char)*size +8);		
    //创建readBuf大小
	int n_read = read(fdSrc,readBuf,size);				//b、读scr 到 buf

	fdDes = open(argv[2], O_RDWR|O_CREAT|O_TRUNC,0600);	//c、打开创建 des
	//没有就creat,把原来的都干掉
	int n_write = write(fdDes,readBuf,strlen(readBuf));	//d、将 buf 写入到 des

	close(fdSrc);										//e、关闭两个文件
	close(fdDes);
	return 0;
}

2、命令的使用

  • 已经写好代码之后,要进行一些命令的执行
gcc demo7.c -o mycp //该命令生成mycp文件,可以代替cp指令使用
  • ls命令查看文件,可见多了 mycp
./mycp demo7.c new.c  //功能是:将 demo7.c 里的内容复制到 new.c
  • ls命令查看文件,可见 new.c

至此,cp指令就实现了,如有不足,还请各位大佬多多指教;

欢迎大家一起交流讨论!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值