read/write
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count); //从fd文件中读取count字节放在buf中
参数:
fd --- 文件描述符
buf --- 内存中用于存放读取数据的空间首地址
count --- 想要读取的字节数
返回值:
成功:成功读取的字节数
0(当读取到文件末尾时)
失败:-1, 并设置errno
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count); //把buf中的count字节数据写入文件fd中去
参数:
fd --- 文件描述符
buf --- 想要写入数据的首地址
count --- 想要写入的字节数
返回值:
成功:成功写入的字节数
失败:-1, 并设置errno
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int fd = open("./1.txt", O_RDONLY);
if (fd < 0)
{
perror("open");
return -1;
}
printf("fd = %d\n", fd);
lseek(fd, 100, SEEK_SET);
char buf[64];
int ret;
while (1)
{
ret = read(fd, buf, sizeof(buf));
if (ret < 0)
{
perror("read");
break;
}
else if (0 == ret)
{
printf("read file end!\n");
break;
}
if (0 > write(1, buf, ret)) //向标准输出写入数据
{
perror("write");
break;
}
}
close(fd);
return 0;
}