使用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)!