文件IO(系统IO)

系统io一般用于打开硬件设备文件,如液晶屏


open -- 打开或创建文件

所需头文件:

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

1>文件存在的情况下

函数原型:

int open(const char * pathname, int flags,mode_t mode);

(mode不是必要参数)

int open(”要打开文件的路径“//或指针类型的变量 ,打开文件的方式)

        O_RDONLY:只读方式打开文件

        O_WRONLY:可写方式打开文件

        O_RDWR:读写方式打开文件

        O_TRUNC::如果文件存在并且可写,那么文件内容清空

        O_CREAT:如果文件不存在则创建文件,mode为文件权限。

        O_APPEND:以追加的方式打开文件,每次写入文件光标都是在末尾

2>文件不存在时

函数原型:

int open(const char * pathname, int flags, int perms);

int open(”要打开文件的路径“//或指针类型的变量 ,打开文件的方式|创建文件,所创建文件的权限 //一般为644)

        O_CREAT:如果该文件不存在,就创建一个新的文件,并用第三个参数为其设置权限

        O_EXCL:如果使用 O_CREAT 时文件存在,则可返回错误消息。这一参数可测试文件是否存在

        O_NOCTTY:使用本参数时,如文件为终端,那么终端不可以作为调用open()系统调用的那个进程的控制终端

        O_TRUNC:如文件已经存在,并且以只读或只写成功打开,那么会先全部删除文件中原有数据

        O_APPEND:以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾

函数返回值:

成功:返回文件描述符 //文件描述符赋值给int型的变量

出错:-1


read --从指定文件中读取数据

所需头文件:

#include <unistd.h>

函数原型:

ssize_t read(int fd, void *buf, size_t count);

ssize_t read(要读取的文件,读取的文件暂存的地址 //一般为数组或者malloc申请的堆空间,一次要读取多少个字节)

函数返回值:

非0:成功,返回读取到的字节数 //返回值赋值给ssize_t类型的变量

0:文件已被读完

-1:出错


write --将数据写到指定文件

所需头文件:

#include <unistd.h>

函数原型:

ssize_t write(int fd, void *buf, size_t count);

ssize_t write(要写到哪个文件,要的的内容的暂存位置 //一般为数组或者malloc申请的堆空间,一次要写入多少个字节)

函数的返回值:

非0:成功,返回成功写入的字节数 //返回值赋值给ssize_t类型的变量

0:成功

-1:出错


lseek --调整文件光标位置偏移量

所需要的头文件:

#include <unistd.h>

#include <sys/types.h>

函数原型:

ssize_t lseek(int fd, off_t offset, int whence);

ssize_t lseek(要偏移的文件 //一般是驱动文件,要偏移的字节数 //可以是负数,偏移的参考位置:

SEEK_SET:文件开头+offset为新读写位置

SEEK_CUR:目前读写位置+offset为新读写位置

SEEK_END:文件结尾+offset为新读写位置

函数的返回值:

成功:返回当前位置到文件起始位置的字节数

-1:出错


close --关闭文件

所需要的头文件:

#include <unistd.h>

函数原型:

int close(int fd);

int close(文件名 //文件描述符)

函数的返回值:

0:成功 //函数的返回值赋值给int型的变量

-1:出错

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值