自学内容网 自学内容网

使用C语言实现Linux的copy功能

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc,char **argv)
//第一个参数是输入变量的个数,第二个到第N个参数都是字符数组的指针(其实也就是字符串的指针)
{
        int fdSrc;//源文件文件描述符
        if (argc != 3)//如果参数不等于三个,说明输入有误
        {
                printf("pararm error\n");//输出参数错误
                exit(-1);//退出主函数返回值为-1
        }
        fdSrc = open(argv[1],O_RDWR);//以可读可写方式打开第一个参数代表(路径)的文件
        char *readBuf;//定义缓冲区
        lseek(fdSrc,0,SEEK_SET);//把光标调到开头
        int n_write = lseek(fdSrc,0,SEEK_END);//把光标调到结尾,返回值就是离开头的偏移量
        lseek(fdSrc,0,SEEK_SET);//再把光标移回开头
        printf("SrcFileSize = %d\n",n_write);//输出源文件的大小
        readBuf = (char*)malloc(sizeof(char)*n_write);//开辟缓冲区空间
        read(fdSrc,readBuf,n_write);//读出数据
        int fdDes;//定义目标文件文件描述符
        fdDes = open(argv[2],O_RDWR|O_CREAT,0600);
        //以可读可写方式打开第二个参数(路径)代表的文件如果没有就创建一个,本用户权限为可读可    
        //写,同组和            
        //其他组没有权限
        write(fdDes,readBuf,n_write*sizeof(char));//写入缓冲区的内容到目标文件
        close(fdDes);//关闭目标文件
        close(fdSrc);//关闭源文件
        return 0;//退出程序返回值为0
}

 

 


原文地址:https://blog.csdn.net/cykaw2590/article/details/144096193

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!