前言:unix下一切东西都是文件,一共有7种不同的文件,前一篇博客已经讲解的很清楚了,不懂的可以看看这里。当然,博主知道有些朋友比忙,没时间看,那我就简单点讲讲这7种文件都有哪些吧。
|
文件类型包括在stat结构的st_mode成员中,下面是这7种文件类型的判断方法: |
当然这些文件都是有访问权限的,很巧这些权限也是在一个叫struct stat这个结构体中
|
结构体struct stat中的成员st_mode值包含了对文件的访问权限位,任何类型的文件都有访问权限(access permission)。每个文件有9个访问权限,可以它们分为3类,u表示用户(所有者)、g表示组、o表示其他 st_mode屏蔽 含义 |
那么问题来了既然有权限,我们怎么知道这些权限呢?当然这不是难事,一个access函数就可以解决问题了
|
函数描述:按实际用户ID和实际组ID进行访问权限测试 |
这是access函数的具体用法的代码(argv[1]必须是一个已经存在的文件):
#include <stdio.h> #include <unistd.h> #include <stdlib.h> int main(int argc,char **argv) { if(argc != 2) { printf("argc must equal to two!\n"); exit(1); } if(access(argv[1],F_OK)) //判断文件是否存在 { printf("%s not existence!\n",argv[1]); exit(1); } if(access(argv[1],R_OK)) //判断文件是否可读 { printf("%s not read permission\n",argv[1]); } else { printf("%s have read permission\n",argv[1]); } if(access(argv[1],W_OK)) //判断文件是否可写 { printf("%s not write permission\n",argv[1]); } else { printf("%s have write permission\n",argv[1]); } if(access(argv[1],X_OK)) //判断文件是否可执行 { printf("%s not execute permission\n",argv[1]); } else { printf("%s have execute permission\n",argv[1]); } return 0; }