天天看点

Linux下读写函数

整理归纳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()函数

所需头文件:

#include <unistd.h>
           

函数原型:

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;
           

参考文章:http://blog.chinaunix.net/uid-548179-id-2385382.html

继续阅读