linux系统io常用接口函数

========================================================================
    系统io最重要的四个函数,打开open,关闭close,读取read,写入write
========================================================================

1、int open(const char *pathname,int flags,mode_t mode);
//打开某个文件,该函数有两种形式,另外一种比较常用,int open(const char *pathname,int flags);

头文件:    #include<sys/types.h>  #include<sys/stat.h>  #include<fcntl.h>
参数:     const char *pathname  打开文件的路径。
    int flags; 打开文件的方式。
================================================================
    常用的flag:
    O_RDONLY  O_WRONLY  O_RDWR  //读写的方式
    O_CREATE //如果文件不存在就创建。
    O_TRUNC  //如果文件存在就清空里面的内容
    O_APPEND //以追加的方式打开文件
===============================================================
    mode 如果文件被新建,指定其权限。

返回值:成功:return 0(文件描述符);  失败:return -1; 

===============================================================
系统默认打开 标准输入,标准输出和标准出错三个文件,即键盘,屏幕,屏幕三个文件(linux里面一切东西都是文件)
,屏幕打开了两次。所以我们文件描述符一般会从3开始。
===============================================================
2、int close(int fd) ;
//关闭某个打开的文件,和open函数配合使用

头文件:    #include<unistd.h>
参数:    fd //打开文件的文件描述符
返回值:成功:return 0;    失败:return 1;

3、ssize_t read(int fd,void *buf,size_t count)
//读取文件fd的内容。
头文件:#include<unistd.h>
参数:    fd:    文件描述符。
    buf:    指向存放读到的数据缓冲区。
    count:    要读多少个字节。
返回值:成功:return 实际读取的字节数;    失败:return -1;

4、ssize_t write(int fd,const void*buf,size_t count)
//向文件fd中写入count个字节
头文件:#include<unistd.h>
参数:    fd:    文件描述符。
    buf:    指向即将要写入的数据。
    count:    要写多少个字节。
返回值:成功:return 实际写入的字节数;    失败:return -1;

======================================================================
                其它常用函数
======================================================================
5、 off_t  lseek(int fd,off_t offset,int whence);
//该函数主要用于调整文件位置,例如你写一个文件,可以从头开始写,也可以从末尾开始写,当然有时候也会从某个位置写,//那么就会使用到该函数。
头文件:#include<sys/types.h>    #include<unistd.h>
参数:    fd:    文件描述符
    offset:    新位置相对于基准点的偏移
    whence:    基准点。
--------------------------------------------------------------------------------------
SEEK_SET:    文件开头处。 SEEK_CUR:文件当前位置。 SEEK_END:文件末尾处。
----------------------------------------------------------------------------------------
返回值:成功:return 新文件位置偏移量; 失败:return -1;

6、dup和dup2函数
//重定向函数,这个函数很容易理解,但用的时候要小心小心再小心,一不小心标准输出就没了
dup(int oldfd);
dup2(int oldfd , int newfd);
//常用dup2,用newfd这个描述符代替oldfd。
头文件 #include<unistd.h>
参数:    oldfd : 要替换的文件描述符
    newfd:替换成newfd文件符。
返回值:成功:return 新的描述符; 失败:return -1;

7、mmap函数
//内存映射函数,lcd屏的内存映射。
void *mmap(void *addr,size_t length , int prot , int flags , int fd , off_set);
参数:
    addr:     一般填入NULL即可,表示系统自动帮我们安排一块内存,并且给我们入口,返回值即为入口。
    length:    映射内存的大小。
    prot:    权限
-----------------------------------------------------------------------------------------------------
PROT_EXEC 可执行。 PROT_READ 可读。 PROT_WRITE 可写。 PROT_NONE 不可访问。
------------------------------------------------------------------------------------------------------
    flags:    一般用MAP_SHARED,表示文件在这块内存的进程对数据的变更均可见。    
    fd:    文件描述符。
    offset:    文件映射的开始区域偏移量,看具体情况填入数值即可,必须是页内存的 整数倍,即函数
    sysconf(_SC_PAGE_SIZE)的整数倍,一般填0就行了。
返回值:成功:return 这块内存的入口指针; 失败:return (void *) -1;
最后记得free掉这个指针。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值