Linux系统下cp指令的实现

这次先说废话,再上代码!(因为cp指令的实现需要明白main函数传参)

1、main函数参数了解

int main(int argc,char *argv[])

 {
     return 0;
 }

       C语言规定了main函数的参数只能有两个,一个是argc,一个是argv,并且argc只能是整数,第二个必须是指向字符串的指针数组。
>>   argc: 参数表示命令行中参数的个数(注意 文本名本身也是一个参数), rgc 的值是在输入命令行时由系统按 实际参数的个数自动赋予的。
>>   argv :参数是字符串指针数组,其各元素值为命令行中各字符串 ( 参数均按字符串处理 ) 的首地址。 指针数组的长度即为参数个数。数组元素初值由系统自动赋予。

示例(Linux系统下完成):

 #include <stdio.h>

int main(int argc , char *argv[])
{
	
   printf("argc is totall %d\n",argc); 
   printf("argv is fistr %s\n",argv[0]);
   printf("argv is second %s\n",argv[1]);
   printf("argv is tired %s\n",argv[2]);
   printf("argv is fourth %s\n",argv[3]);


   return 0;
}

结果展示:

 2、实现cp指令(Linux)

src 源文件 des 目标文件

执行流程

              1、打开源文件(src)open()函数;

              2、读取src文件到缓存数组read;

              3、打开目标文件(des)open()函数;

              4、写入目标文件write;

              5、关闭目标文件和源文件close;

              6、./a.out   src.c    des.c

cp指令代码来咯:

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


int main(int argc , char *argv[]){
	int stc;
	int des;
	char readbuff[1024]={0};//若文件较大可以增大字符数组个数,使用malloc函数也同样可以
	int read_had=0;

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

	read_had = read(stc, &readbuff, 1024); //&readbuff首地址读取

	des = open(argv[2], O_RDWR|O_CREAT, 0755);

	write(des, &readbuff ,read_had); //&readbuff首地址写入,写入个数以已读取个数为限   

	close(stc);
	close(des);

	return 0;
}

代码运行展示:


检查两个文件是否cp成功,可以使用diff   src(源文件)   des(目标文件),若无任何提示,则表示cp成功。

此外运用代码实现cp指令功能不仅可以提高对于Linux文件编写的认识,对于日后应付某些嵌入式相关岗位面试题也有一定帮助。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值