您的位置:首页 > 运维架构 > Linux

LINUX C 获取文件类型 以及访问权限

2011-08-12 11:38 429 查看
#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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐