Read(),Write()
Posted Green
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()的主要内容,如果未能解决你的问题,请参考以下文章
JPA中的PESSIMISTIC_READ和PESSIMISTIC_WRITE有什么区别?