fcntl.h函数库的常用函数使用
来源:互联网 发布:php curl post提交 编辑:程序博客网 时间:2024/06/08 09:25
fcntl.h函数库的常用函数使用
【前言】
这节学习fcntl.h函数库中的几个常用的原型函数,通过这些常用的原型函数完成编程中对文件的打开、数据写入、数据读取、关闭文件的操作。
【定义】
头文件:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
一、打开文件
1、函数定义:int open( const char * pathname, int flags);
2、函数定义:int open( const char * pathname,int flags, mode_t mode);
返回值:成功则返回文件描述符,否则返回-1
函数说明:
参数pathname 指向要打开的文件路径
参数flags 定义以什么权限打开要修改的文件,flash分为单独权限操作和组合权限操作,具体如下
flags单独使用:
O_RDONLY 以只读方式打开文件
O_WRONLY 以只写方式打开文件
O_RDWR 以读写方式打开文件
flags利用OR(|)运算符组合使用
O_CREAT 若欲打开的文件不存在则自动建立该文件。
O_EXCL or O_CREAT 检查文件是否存在,若不存在则建立该文件
O_CREAT or O_EXCL 如果打开的文件为符号连接,则会打开文件失败。
O_NOCTTY 如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。
O_TRUNC 若文件存在并且以可写的方式打开时,文件中的内容将被清空。
O_APPEND 当读写文件时会从文件尾开始移动,将后面要写入的数据会以附加的方式加入到文件后面。
O_NONBLOCK 以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。
O_NDELAY 与 O_NONBLOCK 相同。
O_SYNC 以同步的方式打开文件。
O_NOFOLLOW 如果参数pathname所指的文件为一符号连接,则会令打开文件失败。
O_DIRECTORY 如果参数pathname所指的文件并非为一目录,则会令打开文件失败。
O_NOATIME 从linux 2.6.8内核开始,读文件不更新文件最后访问时间
这里不讲解第2个函数的使用!
二、关闭文件
函数定义:int close(int fd);
返回值:若文件顺利关闭则返回0,发生错误时返回-1。
函数说明:
当使用完文件后若已不再需要可使用该函数关闭文件,close()会让数据写回磁盘,并释放该文件所占用的资源。
参数fd为先前由open()或creat()所打开的文件名。
三、读取数据
函数定义:ssize_t read(int fd,void * buf ,size_t count);
返回值:
若参数count为0,则read()不会有作用并返回0。
若参数count不为0,则返回要求读取的count个字节数,如果返回0,表示已到达文 件尾或者无法读取文件的数据
函数说明:
read()函数把参数fd所指的文件传送count个字节到buf指针所指的内存中。如果顺利read()会返回实际读到的字节数,在编程时最好使用该返回值与参数count作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾或发生了其它的异常,当有错误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。
注意:使用read()函数时要求文件处于打开状态,此外文件读写位置会随读取到的字节移动。
四、写入数据
定义函数:ssize_t write (int fd,const void * buf,size_t count);
返回值:如果正常write()会返回实际写入的字节数,当有错误发生时则返回-1
函数说明:
write()会把参数buf所指的内存写入count个字节到参数fd所指的文件内。文件读写位置会随写入的字节数移动。当写入异常时,错误代码存入errno中。错误代码EINTR此调用被信号所中断。EAGAIN当使用不可阻断I/O时(O_NONBLOCK),若无数据可读取则返回此值。EADF参数fd非有效的文件描述词,或该文件已关闭。
注意:使用write()函数时要求文件处于打开状态,此外文件读写位置会随写入的字节数移动。
五、其它函数
creat(建立文件)
函数定义:int creat(const char * pathname, mode_tmode);
dup(复制文件描述词)
函数定义:int dup (int oldfd);
dup2(复制文件描述词)
函数定义:int dup2(int odlfd,int newfd);
fcntl(文件描述词操作)
函数定义:int fcntl(int fd , int cmd);
int fcntl(int fd,int cmd,long arg);
int fcntl(int fd,int cmd,struct flock * lock);
flock(锁定文件或解除锁定)
函数定义:int flock(int fd,int operation);
fsync(将缓冲区数据写回磁盘)
函数定义:int fsync(int fd);
lseek(移动文件的读写位置)
函数定义:off_t lseek(int fildes,off_t offset ,int whence);
sync(将缓冲区数据写回磁盘)
函数定义:int sync(void)
- fcntl.h函数库的常用函数使用
- fcntl函数的使用
- fcntl函数的使用
- fcntl函数的使用
- fcntl函数的使用详解
- types.h和fcntl.h中的函数
- 文件锁fcntl()函数的使用
- 文件锁fcntl()函数的使用
- 文件锁fcntl()函数的使用
- fcntl 函数使用例子
- fcntl()函数使用
- linux 的 fcntl.h与unistd.h
- opencv函数库常用函数
- cmath 函数库常用函数
- 使用prototype扩展的JavaScript常用函数库
- fcntl函数的应用
- fcntl()函数的用法
- 函数fcntl的用法
- 判断数组为空array==null||array.length==0
- css中关于搜索框或按钮获得焦点时外边框变蓝的处理
- 19. Remove Nth Node From End of List题解
- 提升C++程序效率中的10个技巧
- FTP的搭建过程,以及遇到的坑
- fcntl.h函数库的常用函数使用
- poj 动态规划之1125 Stockbroker Grapevine
- 【MySQL】1130- Host“XXX” is not allowed to connect to this MySql server
- web.py 十分钟创建简易博客
- 享元模式
- mkfifo函数使用
- 剑指offer 面试题59 对称的二叉树
- Android Intent深入解剖(传智播客)
- 高级UI特效之酷炫抢红包金币下落动画