打印文件权限
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
char arr[]={"----------"};
char brr[3]={0,0,0};
struct stat stat_b;
stat("Text.txt",&stat_b);
printf("type: %#o , mode = %#o\n", stat_b.st_mode&__S_IFMT,stat_b.st_mode&0777);
unsigned int Mode_Num;
int i,j,a=0,n=0;
Mode_Num=stat_b.st_mode&0777;
Mode_Num=Mode_Num<<3;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(Mode_Num&0x800)
{
brr[j]=1;
}
Mode_Num=Mode_Num<<1;
}
a=brr[0]*4+brr[1]*2+brr[2]*1;
if(i==0)
{ n=0;}
else if(i==1)
{ n=3;}
else if(i==2)
{ n=6;}
switch(a)
{
case(6):arr[1+n]='r';arr[2+n]='w';break;
case(4):arr[1+n]='r';break;
case(2):arr[2+n]='w';break;
case(1):arr[3+n]='x';break;
}
brr[0]=0;brr[1]=0;brr[2]=0;
}
switch(stat_b.st_mode & __S_IFMT)
{
case __S_IFSOCK:arr[0]='s';break;
case __S_IFLNK:arr[0]='1';break;
case __S_IFREG:arr[0]='-';break;
case __S_IFBLK:arr[0]='b';break;
case __S_IFDIR:arr[0]='d';break;
case __S_IFCHR:arr[0]='c';break;
case __S_IFIFO:arr[0]='p';break;
}
printf("%s\n",arr);
return 0;
}