<打开/创建文件>
//包含的头文件
# include csys/types.h>
# include <sys/stat.h>
# include <fcntL.h>
<Open函数>
int open(const char * pathname, int flags);
int open(const char * pathname, int flags, mode_t mode);
open函数的返回值是一个小的非负整数,这个整数是被open打开的文件描述符。这个描述符在之后的操作中(比如写入,读取等操作)起到一个索引的作用,当描述的值等于 -1 的时候,证明打开文件失败。
<参数说明>
Pathname:要打开的文件名(含路径,缺省为当前路径)
flags:打开文件的方式与权限,一般来说有3种方式
O_RDONLY 只读打开
O_WRONLY只写打开
O_RDWR可读可写打开
以上这三个常数中应当只指定一个,下列常数是可选择的:
O_CREAT若文件不存在则创建它,需要同时说明第三个参数mode,用其说明该新文件的存取许可权限。
O_EXCL如果同时指定了O_CREAT,而文件已经存在,则出错。
O_APPEND每次写时都加到文件的尾端。
O_TRUNC使用属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0。(简单来说就是将原文件的内容全部清除,将新文件内容)
open函数的使用方法:
int fd;//储存文件描述符
fd=open("./file",O_RDWR);//使用可读可写方式打开file
这样操作就打开了file,前提是file存在,如果file不存在则不执行。
如果file不存在,而我们又想打开file则需要我们建立file。
此时需要借助O_CREAT来创建:
int fd;//储存文件描述符
fd=open("./file",O_RDWR|O_CREAT);
mode的使用:一定是在 flags 中使用了O_CREAT标志,mode记录准备创建的文件的访问权限
在Linux操作系统中,对权限的描述:
权限类别 | 英文指令 | 数值 |
---|---|---|
可读 | r | 4 |
可写 | w | 2 |
可执行 | x | 1 |
//int open(const char *pathname,int flags,mode_t mode);
int fd;//储存文件描述符
fd=open("./file",O_RDWR|O_CREAT,0600);//0600为mode的参数
其中0600,这里的6=4+2,可读加上可写的权限;如果是7,那么权限即为可读可写可执行。
而6后面的两个0,第一个为同组下的权限,最后一个0为其他组下的权限。
ls -l//查询文件权限
-rw-r--r-- 1 LPJ book demo1.c
-rw------- 1 LPJ book file