实现Linux cp 命令
cp xx1 xx2
实现之前需要了解c语言的参数
#include <stdio.h>
int main(int argc, char **argv)
{
printf("total params: %d\n",argc);
printf("No.1 params: %s\n",argv[0]);
printf("No.2 params: %s\n",argv[1]);
printf("No.3 params: %s\n",argv[2]);
return 0;
}
输出结果如下

./a.out des src => cp xx1 xx2
其思路
打开源文件(src)
读取src到buf
打开/创建des(目标文件)
将buf写入des
close这两个文件 (src, des)
代码如下
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 argc, char **argv)
{
char *readBuf = NULL;
int fdSrc = open(argv[1], O_RDWR);
int size = lseek(fdSrc, 0, SEEK_END);
lseek(fdSrc, 0, SEEK_SET);
readBuf = (char *)malloc(sizeof(char) * size + 8);
read(fdSrc, readBuf, size);
int fdDes = open(argv[2], O_RDWR | O_CREAT | O_TRUNC, 0600);
write(fdDes, readBuf, strlen(readBuf));
close(fdSrc);
close(fdDes);
return 0;
}