当前位置: 首页 > 工具软件 > MYCP > 使用案例 >

Linux下写一个自己的cp命令---mycp命令

有宏峻
2023-12-01

Linux下写一个自己的cp命令—mycp命令

学习Linux过程中,学习open函数时,会碰到实现一个mycp命令,也就是动手实现一个简单的cp命令,功能是Linux下cp命令的缩减版。

一、分析需求

Linux下的cp命令:
1.cp命令的基本用法: cp 源文件 目标文件

2.如果目标文件不存在 就创建, 如果存在就覆盖

3.实现一个cp命令其实就是读写文件的操作:

(1)对于源文件: 把内容全部读取到缓存中,用到的函数read

(2)对于目标文件: 把缓存中的内容全部写入到目标文件,用到的函数write

二、代码写作思路

1.打开源文件,打开读取权限,准备拷贝
2.打开准备拷贝到的目标文件,若文件不存在,则创建目标文件,开启读写权限
3.读取源文件,存储到缓冲区
4.将缓冲区内容写入目标文件
5.判断是否完成文件复制,完成则退出
6.关闭源文件,和目标文件

三、代码

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

int main(char argc,char *argv[])
{
    //判端参数是否正确,否则退出
    if(argc!=3)
    {
        printf("./a.out file_name1 file_name2\n");
            return -1;
    }
    int fd_src;//源文件
    int fd_aim;//复制到的目标文件
    
    //打开源文件
    fd_src=open(argv[1],O_RDONLY);
	//判断源文件是否打开成功
    if(fd_src<0)
        {
			printf("file_name1 open fail! ");
                return -2;
        }
	//打开目标文件,O_TRUNC:若文件存在,直接覆盖,否则创建(O_CREAT)
   fd_aim=open(argv[2],O_WRONLY|O_TRUNC|O_CREAT,0666);
    
    char buf[256];//文件存储缓冲区
    int ret;		//读取文件内容长度
    
    while(1)
    {
        ret=read(fd_src,buf,sizeof(buf));
        write(fd_aim,buf,ret);
        
        //判断是否文件读取结束
        if(ret!=256)
            break;
    }
 	
    //关闭打开的源文件和目标文件
    close(fd_src);
    close(fd_aim);
    
    return 0;
}
 类似资料: