/*文件控制选项头文件。主要定义了函数fcntl和open中用到的一下选项*/
#ifndef _FCNTL_H
#define _FCNTL_H
#include<sys/types.h>/*类型头文件,定义了基本的系统数据类型*/
#define O_ACCMODE 00003 //文件访问模式屏蔽码
#define O_RDONLY 00 //只读方式打开
#define O_WRONLY 01 //只写方式打开
#define O_RDWR 02 //以读写方式打开文件
#define O_CREAT 00100 //文件不存在,就创建
#define O_EXCL 00200 //独占使用文件标志
#define O_NOCTTY 00400 //不分配终端
#define O_TRUNC 01000 //若文件已存在且是写操作,则长度截为0
#define O_APPEND 02000 //追加方式打开,文件指针置为文件尾
#define O_NONBLOCK 04000 //非阻塞方式打开和操作文件
#define O_NDELAY O_NONBLOCK//非阻塞方式打开和操作文件
//
#define F_DUPFD 0 //拷贝文件句柄为最小值且没有使用的句柄
#define F_GETFD 1 //取文件句柄标志
#define F_SETFD 2 //设置文件句柄标志
#define F_GETFL 3 //取文件状态标志和访问模式
#define F_SETFL 4 //设置文件状态标志和访问模式
#define F_GETLK 5 //返回阻止锁定的flock结构
#define F_SETLK 6 //设置(F_RDLCK或F_WRLCK)或清除锁定
#define F_SETLKW 7 //等待设置或清除锁定
//在执行exec簇函数时关闭文件句柄
#define FD_CLOEXEC 1 //
//
#define F_RDLCK 0 //共享或读文件锁定
#define F_WRLCK 1 //独占或写文件锁定
#define F_UNLCK 2 //文件解锁
//没有实现。文件锁定操作数据数据结构,描述受影响文件段的类型(l_type)开始偏移
//(l_whence),相对偏移(l_start),锁定长度(l_len)和实施锁定的进程id
struct flock{
short l_type; //锁定类型(F_RDLCK,F_WRLCK,F_UNLCK)
short l_whence; //开始偏移(SEEK_SET,SEEK_CUR,SEEK_END)
off_t l_start; //阻塞锁定的开始处.相对偏移
off_t l_len; //阻塞锁定的大小,如果是0则为文件末尾
pid_t l_pid; //加锁的进程id
};
/*
*创建新文件或重写一个存在的文件
*/
extern int creat(const char*filename,mode_t mode);
/*
*文件句柄操作,会影响文件的打开
*/
extern int fcntl(int files,int cmd,...);
//打开文件。在文件与文件句柄之间建立联系
extern int open(const char*filename,int flags,...);
#endif
linux_011之fcntl.h头文件
最新推荐文章于 2024-09-05 09:12:54 发布