#include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<unistd.h>
#include <pwd.h>
#include <grp.h>
#include <time.h>
int main(int argc, const char *argv[])
{
int df;
struct stat buf;
struct passwd *p;
struct group *g;
struct tm *time;
df = stat(argv[1],&buf);
if(df != 0)
{
perror("fail to open");
exit(1);
}
if(S_ISREG(buf.st_mode))
putchar('-');
if(buf.st_mode & S_IRUSR)
putchar('r');
else
putchar('-');
if(buf.st_mode & S_IWUSR)
putchar('w');
else
putchar('-');
if(buf.st_mode & S_IXUSR)
putchar('x');
else
putchar('-');
if(buf.st_mode & S_IRGRP)
putchar('r');
else
putchar('-');
if(buf.st_mode & S_IWGRP)
putchar('w');
else
putchar('-');
if(buf.st_mode & S_IXGRP)
putchar('x');
else
putchar('-');
if(buf.st_mode & S_IROTH)
putchar('r');
else
putchar('-');
if(buf.st_mode & S_IWOTH)
putchar('w');
else
putchar('-');
if(buf.st_mode & S_IXOTH)
putchar('x');
else
putchar('-');
printf(" %d ",buf.st_nlink);
p = getpwuid(buf.st_uid);
printf(" %s ",p->pw_name);
g = getgrgid(buf.st_gid);
printf(" %s ",g->gr_name);
printf(" %ld ",buf.st_size);
printf(" %.12s ",ctime(&buf.st_mtime)+4);
printf(" %s ",argv[1]);
printf("\n");
return 0;
}
用stat写出ls -l 的功能
最新推荐文章于 2023-01-31 20:08:32 发布