open:
作用:打开和创建文件;
#include<fcntl.h>
int open(constcharpathname,intflags);
int open(constcharpathname,intflags,mode_t mode);
返回值:成功则返回文件描述符,否则返回-1
O_RDONLY只读模式
O_WRONLY只写模式
O_RDWR读写模式
read:
函数定义
ssize_t read [1] (int fd, void *buf, size_t count);
成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0。
参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移
write:
write函数把buf中nbyte写入文件描述符handle所指的文档,成功时返回写的字节数,错误时返回-1.
:ssize_t write(int fd, const void *buf, size_t nbyte);
fd:文件描述符;
buf:指定的缓冲区,即指针,指向一段内存单元;
nbyte:要写入文件指定的字节数;
返回值:写入文档的字节数(成功);-1(出错)
#include "head.h"
int main(int argc, char **argv) {
int fd, fd2;
if((fd = open(argv[1], O_RDONLY)) < 0) {
fprintf(stderr, "Error!\n");
perror("open");
exit(1);
}
if ((fd2 = open(argv[2], O_CREAT| O_RDWR, 0666)) < 0) { //判断文件2权限是否存在 并 设定文件权限为664---
perror("open");
exit(1);
}
while(1){
char buff[512] = {0};
ssize_t size = read(fd, buff, sizeof(buff)); //实现读入;
printf("%s", buff); // 将读入的内容打印;
write(fd2, buff, size); // 将读入的内容再写入文件2;
if(size <= 0) {
break;
}
}
close(fd);
close(fd2);// 关闭文件1和2;
perror("open2");
return 0;
}