Linux系统下cp指令的实现

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

1、main函数参数了解

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

 {
     return 0;
 }

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

示例(Linux系统下完成):

 #include 

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;
}

结果展示:

Linux系统下cp指令的实现_第1张图片

 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 
#include 
#include 
#include 
#include 


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;
}

代码运行展示:

Linux系统下cp指令的实现_第2张图片


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

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

 

你可能感兴趣的:(c语言,linux,物联网)