st_mode 权限:由文件类型(dcb-lsp7种)与文件权限组成。权限所存放的位置;前面有一位 是文件类型。存放形式:位图16bit整形数;user group other;3*3;directory,character/block设备,regular,link符号链接文件,socket网络套接字文件 ,pipe命名管道
#include <stdio.h>
#include<stdlib.h>
static int ftype(const char *fname){
//char型不安全,用Int来代替
struct stat statres;
if (stat(fname,&statres)<0){
perror("stat()");
exit(1);
}
if(S_ISREG(statres.st_mode))
return '-';
else if(S_ISDIR(statres.st_mode))
return 'd';
else if(S_ISSOCK(statres.st_mode))
return 's';
...
else
return '?';
}
int main(int argc,char *argv[]){
if(argc <2){
fprintf(stderr,"Usage...\n");
exit(1);
}
printf("%c\n",ftype(argv[1]));
exit(0);
}
- 文件类型两种方式:用宏进行检测;用已经定义好的表示位图的宏值来进行按位操作 。