Appearance
- 文件 I/O ,也叫做非缓冲 I/O (unbufferered I/O)
- 与操作系统绑定,可移植性差
- 每个
read,write都是内核中的一个 systemcall,所以也叫做系统调用 I/O - 响应速度快,但标准I/O吞吐量大
- 标准I/O和文件I/O不可混用(因为为缓冲区的存在,偏移的规则不同)
- 开发中应尽量使用标准I/O,只有特使需求的时候使用标准I/O
- 函数接口多在 man 手册的第二部分
文件描述符
read()
c
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);参数
从 fd读取count个字节到buf。
返回
返回成功读到的字节数,失败返回 -1,重置 errno。
write()
c
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);params
从 buf 读取 count个字节到fd。
return
lseek()
c
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);params
@whence: SEEK_CUR,SEEK_END,SEEK_SET
return
Example
c
int
main(int argc, char const* argv[]) {
char buf[20] = { 0 };
while (1) {
memset(buf, 0, sizeof(buf));
read(STDIN_FILENO, buf, sizeof(buf));
write(STDOUT_FILENO, buf, sizeof(buf));
}
return 0;
}