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);
}
 
  • 文件类型两种方式:用宏进行检测;用已经定义好的表示位图的宏值来进行按位操作 。