cp指令执行步骤:
- 打开需要被拷贝的文件
- 读取文件内容
- 打开/创建要拷贝到的文件
- 将读取到的内容写入要拷贝的文件
- 关闭两个文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main(int gcc, char **gvv)
{
int fd;
int fdscc;
if(gcc!=3){
printf("prame error\n");
exit(-1);
}
fd=open(gvv[1],O_RDWR);
int size=lseek(fd,0,SEEK_END);
lseek(fd,0,SEEK_SET);
char *readbuf=(char *)malloc(sizeof(char)*size + 1);
int n_read=read(fd,readbuf,size);
fdscc = open(gvv[2],O_RDWR|O_CREAT|O_TRUNC,0600); //O_TRUNC不可省略否则每次运行代码后
// 代码将不断复制到文件末尾
int n_write = write(fdscc,readbuf,strlen(readbuf));
close(fd);
close(fdscc);
return 0;
}
代码解析:
int main(gcc,**gvv) gcc:代表执行文件个数 例如(将key.c拷贝到demo.c):./a.out key.c demo.c 此时gcc=3
{ **gvv:每个指针都代表一个数组 gvv[0]:a.out gvv[1]:key.c gvv[2]:demo.c
}