首页 > 代码库 > Read(),Write()
Read(),Write()
read
read()是一个系统调用函数。用来从一个文件中,读取指定长度的数据到 buf 中。
使用read()时需要包含的头文件: <unistd.h>
函数原型:
ssize_t read(int fd, void *buf, size_t count);
ssize_t是系统头文件中 typedef 定义的数据类型,相当于 signed int。
参数:
fd:要从中读取内容的文件的文件描述符。
count:期望读取的文件字节数。
返回值:
成功 返回读到的字节数; 已读到文件结尾返回 0; 出错返回 -1。
Write
write()是一个系统调用函数,作用是将buf 中的内容写入到文件中。
使用write()函数时要包含头文件 <unistd.h>。
函数原型:
ssize_t write(int fd, char *buf, size_t count)
参数:
fd:要从中读取内容的文件的文件描述符。
count:期望读取的文件字节数。
返回值:
写入成功返回实际写入的字节数,出错返回-1。
不得不提的是,返回-1的常见原因是:磁盘空间已满,超过了一个给定进程的文件长度。
使用read(),write()完成文件拷贝:
1 #include <unistd.h> 2 int main(int argc, char *argv[]) 3 { 4 int fs = open(argv[1], O_RDONLY); //打开要复制的源文件 5 if (fs == -1) 6 { 7 perror("open source file"); 8 return -1; 9 } 10 int fd = open(argv[1], O_RDONLY | O_CREAT | O_EXCL, 0666); //创建要复制的目标文件,若文件已存在退出 11 if (fd < 0) 12 { 13 perror("open dest file"); 14 return -1; 15 } 16 17 char buf[32] = {0}; 18 int count ; 19 while ((count = read(fs, buf, sizeof(buf))) > 0) //从源文件读取数据并写入目标文件 20 { 21 write (fd, buf, strlen(buf)); 22 } 23 close(fs); 24 close(fd); 25 return 0; 26 }
Read(),Write()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。