整理归纳Linux下用到的四个读写相关的函数:open() write() read() close()
1.open()函数
功能:以指定的方式打开或者创建文件
所需头文件:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
函数原型:
int open(const char* pathname,int flags)
int open(const char* pathname,int flags,mode_t mode)
pathname: 打开的文件的文件名(可包含路径)
flags: 打开文件的方式
O_RDONLY: 只读方式;O_WRONLY: 只写;O_RDWR:读写
O_CREAT:如果文件不存在,就创建一个新文件,并且用mode设置权限
O_APPEND;打开文件后定位到文件的末尾
O_EXCL:如果要创建的文件已存在,返回-1,修改errno的值
O_TRUNC:如果文件已存在,删除文件中的全部原有数据,并且设置文件大小为0
......
flags参数可以通过“|”组合构成
mode:打开文件的存取权限设置
返回值:
成功:返回文件描述符;失败:返回-1
2,close()函数
功能:关闭一个被打开的文件
所需头文件:
#include <unistd.h>
函数原型:
int close(int fd)
fd为需要关闭的文件的描述符
返回值:
成功,返回0;失败,返回-1
3.read()函数
功能:从文件中读取内容
所需头文件:
#include <unistd.h>
函数原型:
ssize_t read(int fd,void *buf,size_t nbyte)
fd 为要读取的文件的文件描述符
buf 用于存放读取内容的缓冲区
nbyte 所需要读取的字节数
返回值:
读取成功时,返回实际读取的字节数
读到文件结尾,返回 0
出现错误,返回小于0的数,同时修改errno的值,根据errno的值确定错误类型
4.write()函数
所需头文件:
函数原型:
ssize_t write(int fd,const void *buf,size_t nbytes)
fd 为所要写的文件的描述副
buf 为要写入文件的缓冲区的内容
nbytes 要写入的字节数
返回值:
未出错时,返回实际写入的字节数(大于0)
出错时,返回值小于等于0,同时修改errno的值,根据errno的值确定错误类型
5.利用write()函数和read()函数实现数据的传递
/*客户端向服务器进行写*/
struct my_struct my_struct_client;
write(fd,(void *)&my_struct_client,sizeof(struct my_struct);
/*服务端进行读*/
char buffer[sizeof(struct my_struct)];
struct *my_struct_server;
read(fd,(void *)buffer,sizeof(struct my_struct));
my_struct_server=(struct my_struct *)buffer;