1.open
- 功能:打开文件,返回最小可用的文件描述符
- 原型:
int open(const char *path, int oflag, ...);
- 参数:
1)path
2)flags - 返回值:
成功:返回最小可用的文件描述符
失败:返回-1,并会设置errno
2.close
- 功能:关闭文件描述符
- 原型:
int close(int fd);
- 参数:
1)fd - 返回值:
成功:返回0
失败:返回-1,并会设置errno
3.read
- 功能:读取文件
- 原型:
ssize_t read(int fd, void *buf, size_t count); //文件描述符 缓冲区 长度
- 参数:
1)fd
2)buf
3)count,最多读取的字节数目 - 返回值:
成功:返回实际读取的字节数目,0表示读到了文件的末尾
失败:返回-1,并会设置errno
4.write
- 功能:写文件
- 原型:
ssize_t write(int fd, const void *buf, size_t count);
- 参数:
1)fd
2)buf
3)count,要实际写的字节数目 - 返回值:
成功:返回实际写入的字节数目
失败:返回-1,并会设置errno
DO
#include <func.h>
int main(int argc, char* argv[]) {
// ./copy src dst
if (argc != 3) {
error(1, errno, "Usage: %s src dst", argv[0]);
}
// 1.打开src和dst
int src = open(argv[1], O_RDONLY);
if (src == -1) {
error(1, errno, "open %s", argv[1]);
}
int dst = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (dst == -1) {
error(1, errno, "open %s", argv[2]);
}
// 2.复制文件
char buf[4096];
int bytes;
while ((bytes = read(src, buf, sizeof(buf))) > 0) {
write(dst, buf, bytes);
}
// 3.关闭文件
close(src);
close(dst);
return 0;
}