#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pwd.h> //getpwuid()函数的头文件
#include <grp.h> //getgrgid()函数的头文件
{
if (argc < 2)
{
printf("usage:%s file\n", argv[1]);
return -1;
}
if (lstat(argv[1], &buf) == -1) //将文件结构体信息存到buf里
{
perror("lstat");
return -1;
}
printf("%ld ", buf.st_ino); //打印文件的inode信息
switch(buf.st_mode & S_IFMT) //判断文件的类型并打印 查看man手册:man lstat
{
case S_IFSOCK: printf("s"); break;
case S_IFLNK: printf("l"); break;
case S_IFREG: printf("-"); break;
case S_IFBLK: printf("b"); break;
case S_IFDIR: printf("d"); break;
case S_IFCHR: printf("c"); break;
case S_IFIFO: printf("f"); break;
}
i=8; //以下循环打印出文件的拥有者、所在组、其他人的读、写以及执行权限
while (i>=0)
{
if ((1<<i) & buf.st_mode)
{
switch(i%3)
{
case 2: printf("r"); break;
case 1: printf("w"); break;
case 0: printf("x"); break;
}
}
else
printf("-");
i--;
}
printf(" %d %s %s %ld", buf.st_nlink, getpwuid(buf.st_uid)->pw_name, getgrgid(buf.st_gid)->gr_name,
buf.st_size);
printf(" %d-%d-%d %d:%d %s\n", date->tm_year+1900, date->tm_mon+1, date->tm_mday, date->tm_hour,
date->tm_min, argv[1]);
return 0;
}
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pwd.h> //getpwuid()函数的头文件
#include <grp.h> //getgrgid()函数的头文件
#include <time.h>
{
struct stat buf;
struct tm *date;
if (argc < 2)
{
printf("usage:%s file\n", argv[1]);
return -1;
}
if (lstat(argv[1], &buf) == -1) //将文件结构体信息存到buf里
{
perror("lstat");
return -1;
}
printf("%ld ", buf.st_ino); //打印文件的inode信息
switch(buf.st_mode & S_IFMT) //判断文件的类型并打印 查看man手册:man lstat
{
case S_IFSOCK: printf("s"); break;
case S_IFLNK: printf("l"); break;
case S_IFREG: printf("-"); break;
case S_IFBLK: printf("b"); break;
case S_IFDIR: printf("d"); break;
case S_IFCHR: printf("c"); break;
case S_IFIFO: printf("f"); break;
}
i=8; //以下循环打印出文件的拥有者、所在组、其他人的读、写以及执行权限
while (i>=0)
{
if ((1<<i) & buf.st_mode)
{
switch(i%3)
{
case 2: printf("r"); break;
case 1: printf("w"); break;
case 0: printf("x"); break;
}
}
else
printf("-");
i--;
}
date = localtime(&buf.st_mtime);
printf(" %d %s %s %ld", buf.st_nlink, getpwuid(buf.st_uid)->pw_name, getgrgid(buf.st_gid)->gr_name,
buf.st_size);
printf(" %d-%d-%d %d:%d %s\n", date->tm_year+1900, date->tm_mon+1, date->tm_mday, date->tm_hour,
date->tm_min, argv[1]);
return 0;
}