使用stat整理文件属性到类似ls -l形式
功能函数:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <stdlib.h>
void modeshow(mode_t mode)
{
for(int i=0;i<9;i++)
{
if((mode&(0400>>i))==0)
{
putchar('-');
continue;
}
switch(i%3)
{
case 0:
putchar('r');
break;
case 1:
putchar('w');
break;
case 2:
putchar('x');
break;
}
}
return;
}
void timepos(time_t time)
{
struct tm *q=localtime(&time);
if(NULL==q)
{
perror("localtime");
return;
}
printf("%2d月 %2d %02d:%02d",q->tm_mon+1,q->tm_mday,q->tm_hour,q->tm_min);
fflush(stdout);
}
头文件:
#ifndef _ZY_H
#define _ZY_H
void modeshow(mode_t mode);
void timepos(time_t time);
#endif
主函数:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include "zy.h"
int main(int argc, const char *argv[])
{
struct stat str;
char *doc="zy.c";
int p=stat(doc,&str);
if(p<0)
{
perror("stat");
return -1;
}
modeshow(str.st_mode);
printf(" %ld",str.st_nlink);
printf(" %d",str.st_uid);
printf(" %d",str.st_gid);
printf(" %4ld",str.st_size);
timepos(str.st_mtime);
printf(" %s\n",doc);
return 0;
}
终端输出结果: