#include <sys/types.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <pwd.h>
#include <grp.h>
#include <time.h>
#include <langinfo.h>
//這是header.h//////////////////////////////////////////
/*
//LINUX C 獲取文件類型描述
*/
int main(int argc ,char **argv)
{
struct stat buf;
if(argc == 1 )
{
printf("Using %s filename\n",argv[0]);
return 0;
}
if(lstat(argv[1],&buf) == -1)
{
printf("stat error:%s\n",strerror(errno));
return -1;
}
printf("st_mode :%o\n",buf.st_mode);
if(S_ISREG(buf.st_mode))
printf("-");
else if(S_ISDIR(buf.st_mode))
printf("d");
else if(S_ISCHR(buf.st_mode))
printf("c");
else if(S_ISBLK(buf.st_mode))
printf("b");
else if(S_ISFIFO(buf.st_mode))
printf("p");
else if(S_ISLNK(buf.st_mode))
printf("l");
else if(S_ISSOCK(buf.st_mode))
printf("s");
else
printf("error");
printf("\n");
}
#include "header.h"
/*
*/
int main(int argc ,char **argv)
{
struct stat buf;
if(argc == 1 )
{
printf("Using %s filename\n",argv[0]);
return 0;
}
if(lstat(argv[1],&buf) == -1)
{
printf("stat error:%s\n",strerror(errno));
return -1;
}
printf("st_mode :%o\n",buf.st_mode);
int n;
for(n=8;n>=0;n--)
{
if(buf.st_mode&(1<<n))
{
switch(n%3)
{
case 2:
printf("r");
break;
case 1:
printf("w");
break;
case 0:
printf("x");
break;
default:
break;
}
}
else
{
printf("-");
}
}
printf("\n");
}