#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int fd1,fd2;
int n = 0;
char buff[1024];
//只读打开源文件
fd1 = open(argv[1],O_RDONLY);
if(fd1 == -1)
{
perror("fd1 open error");
exit(1);
}
//只写方式打开,覆盖原文件内容,不存在则创建,rw-r--r--
fd2 = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC, 0664);
if(fd2 == -1)
{
perror("fd2 open error");
exit(1);
}
while((n=read(fd1, buff, sizeof(buff))) != 0)
{
if(n < 0)
{
perror("read error");
break;
}
write(fd2, buff, n);//不应写出1024, 读多少写多少
}
close(fd1);
close(fd2);
return 0;
}
可以看到经过cp,open1.c 和 open.c 文件大小是一样的。文件内容也是一样的。