编程思路
1.打开需要拷贝的文件
2.读文件数据到buf
3.打开并创建目标文件
4.将buf数据写入到目标文件
5.close两个文件
代码实现
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
if(argc != 3)
{
printf("请输入拷贝文件和目标文件\n");
exit (-1);
}
//拿到需要拷贝文件的fd
int fdcopy = open(argv[1],O_RDWR);
//计算文件的字节大小
int size = lseek(fdcopy,0,SEEK_END);
//给缓冲区开辟内存空间
char *buf = (char*)malloc(sizeof(char)*size);
//移动指针光标到头部
lseek(fdcopy,0,SEEK_SET);
int n_read = read(fdcopy,buf,size);
//创建并拿到目标文件的fd,如果已存在则以读写方式打开
int fdtarget = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);
int n_write = write(fdtarget,buf,strlen(buf));
//关闭
close(fdcopy);
close(fdtarget);
return 0;
}
编译运行
终端输入 vimdiff xxxx xxxx查看对比两个文件的差异
vimdiff open.c open2.c
很明显,这两个文件除了名字一模一样