/*
* mydir.c
*
* Created on: 2012-3-25
* Author: root
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>
#include <time.h>
#include <pwd.h>
#include <grp.h>
int mainls() {
DIR *pdir = opendir(".");//当前路径,也可指定路径
if (pdir != NULL) {//如果为空则不存在这个目录
struct dirent* pdirent = NULL;
while ((pdirent = readdir(pdir)) != NULL) {//如果为空则说明已经读完了
//struct stat* pstat = NULL;
//stat(pdirent->d_name, pstat);//是将pdirent->d_name的相关信息放进pstat,但它可能没空间
//struct stat pstat;//这样就有空间
//int ret = stat(pdirent->d_name, &pstat);
struct stat *pstat = malloc(sizeof(struct stat));//这样就有空间
int ret = stat(pdirent->d_name, pstat);
//如果操作的不是当前路径则stat的第一个参数必须带上完整路径+文件名
if (ret == 0) {
char perms[11] = "----------";//最后一个为\0
switch (pstat->st_mode & S_IFMT) {//S_IFMT是全为1,模式和它与得到的结果就是当前文件的模式。也可以用各种模式的宏判断
case S_IFREG:
perms[0] = '-';
break;
case S_IFBLK:
perms[0] = 'b';
break;
case S_IFCHR:
perms[0] = 'c';
break;
case S_IFDIR:
perms[0] = 'd';
break;
default:
break;
}
if (pstat->st_mode & S_IRUSR)
perms[1] = 'r';
if (pstat->st_mode & S_IWUSR)
perms[2] = 'w';
if (pstat->st_mode & S_IXUSR)
perms[3] = 'x';
if (pstat->st_mode & S_IRGRP)
perms[4] = 'r';
if (pstat->st_mode & S_IWGRP)
perms[5] = 'w';
if (pstat->st_mode & S_IXGRP)
perms[6] = 'x';
if (pstat->st_mode & S_IROTH)
perms[7] = 'r';
if (pstat->st_mode & S_IWOTH)
perms[8] = 'w';
if (pstat->st_mode & S_IXOTH)
perms[9] = 'x';//不能加else,因为每一个都要判断
struct tm *tm = localtime(&pstat->st_mtime);//返回可以直接定义指针说明是内部会定义空间
char buf[128] = { '\0' };
strftime(buf, sizeof(buf), "%m-%d %H:%M", tm);
char all_buf[256] = { '\0' };
sprintf(all_buf, "%-12s %-4d %-6s %-6s %-10ld %-16s %-32s\n",
perms, pstat->st_nlink,
getpwuid(pstat->st_uid)->pw_name, getgrgid(
pstat->st_gid)->gr_name, pstat->st_size, buf,
pdirent ->d_name);
printf("%s", all_buf);
}
}
closedir(pdir);
}
return 0;
}
ls.zip_compositionhnn
版权申诉
5 浏览量
2022-09-14
22:12:02
上传
评论
收藏 1KB ZIP 举报
朱moyimi
- 粉丝: 65
- 资源: 1万+
最新资源
- 10Eclipse项目源码.jpg
- 大屏可视化数据课程项目
- Maven 快速入门指南:安装和配置方法详解
- STM32物信息通过MQTT协议上传云平台
- STM32物信息通过MQTT协议上传云平台
- 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本122.0.6260.0)
- 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本122.0.6259.0)
- 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本122.0.6258.0)
- 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本122.0.6257.0)
- Screenshot_2024_0614_022736.png
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈