linux系统函数open,create中flags和mode参数总结 - wudymand

时间:2024-02-25 13:04:14

linux系统函数open,create中flags和mode参数总结

我们在linux系统下编程,经常会用到I/O 系统函数去操作文件,再用到open和create函数去创建和打开文件时,函数中的参数如何理解呢。
int open(const char *pathname,int flags)
int open(const char *pathname,int flags,mode_t mode)
int creat(const char *pathname,mode_t mode)

pathname不用说,指的是文件的路径。

flags是指打开文件的方式,一般是文件已经存在,我们用何种方式去打开。主要有以下:O_CREAT(如果文件不存在,则创建新文件),O_RDONLY(只读打开),O_WRONLY(只写打开),O_RDWR(可读可写打开),O_APPEND(写时追加到文件尾),O_ASYNC,O_CLOEXEC,O_DIRECT,O_DIRECTORY,O_EXCL,O_LARGFILE,O_NOATIME,O_NOCTTY,O_NOFLOW
O_NONBLOCK,O_NDELAY,O_SYNC,O_TRUNC等


mode_t mode 是在创建文件时才会用到,两种情形,一种是open 函数带有O_CREAT这个flags,另外一种是用creat函数。
mode_t是指创建的文件权限,S_IRUSR,S_IWUSR,S_IXUSER,S_IRWXU;          S_IRGRP,S_IWGRP,S_IXGRP,S_IRWXG;   S_IROTH,S_IWOTH,S_IXOTH,S_IRWXO
                                                用户读, 用户写,用户执行,用户读写运行;   组读,组写,组运行,组读写运行;    其他人读,其他人写,其他人运行,其他人读写运行
例如文件test.txt 全部权限打开为0777,对应的权限为rwxrwxrwx,第一组为用户,第二组为组,第三组为其他人