2023.2.23作业

作业要求:输出一个文件描述表中的inode表储存的文件属性;

代码如下图所示:

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/stat.h>
#include<time.h>
#include<string.h>
void get_filepermission(mode_t mode)
{
    int i=0,i1=0;  //i1为测试循环次数函数
    int t=0400;
    printf("文件权限为-");
    do
    {
        if((mode&t)!=0&&0==i%3)
            putchar('r');
        else if((mode&t)!=0&&1==i%3)
            putchar('w');
        else if((mode&t)!=0&&2==i%3)
            putchar('x');
        else
            putchar('-');
        i++;
    }while((t=(t>>1))!=0);
    printf("\n");
    //printf("循环了%d次\n",i);
}


void get_fileTime(long int *t)
{
    struct tm*t1=localtime(t);//用localtime把时间转化成:年月日时分秒
    printf("文件最后修改日期为:%4d年%2d月%2d日%2d:%2d:%2d\n",t1->tm_year+1900,\
            t1->tm_mon,t1->tm_mday,t1->tm_hour,t1->tm_min,t1->tm_sec);
}

int main(int argc, const char *argv[])
{
    struct stat buf;//定义一个结构体变量buf
    if(stat("./number1.txt",&buf)<0)//将一个文件的inode表的地址放到buf中去
    {
        perror("stat");
        return -1;
    }
    //输出权限
    get_filepermission(buf.st_mode);
    //输出用户号
    printf("UID为:%d\n",buf.st_uid);    
    //输出组号
    printf("GID为:%d\n",buf.st_gid);
    //输出时间
    get_fileTime(&buf.st_atim.tv_sec);   //将储存时间变量的指针的结构体变量buf调入到提取时间函数中
    //输出大小
    printf("文件大小为:%ld\n",buf.st_size);
    return 0;
}

输出效果如下;

原文件属性如下图;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值