Linux基础?ls功能的简单实现
作者:网络转载 发布时间:[ 2014/10/13 10:23:02 ] 推荐标签:操作系统 Linux
后,我们在编写一个简单的show()函数,来显示各个文件的信息。
show函数实现如下:
1 void show(char name[][CNT], int cnt)
2 {
3 int index;
4 char mode[10];
5 char *str;
6 struct stat buf;
7 for(index = 0; index < cnt; index ++)
8 {
9 memset(&buf, 0, sizeof(buf));
10 if(stat(name[index], &buf) == -1)
11 {
12 printf("stat error!! ");
13 exit(1);
14 }
15 mode_to_char(buf.st_mode, mode);
16 str = ctime(&buf.st_atime);
17 str = time_change(str);
18 int i;
19 for(i = strlen(name[index]) - 1; name[index][i] != '/'; i --);
20 i++;
21 printf("%10s.%2d %5s %5s%5d%13s %s ", mode, buf.st_nlink, getpwuid(buf.st_uid)->pw_name, getgrgid(buf.st_gid)->gr_name, buf.st_size, str, name[index] + i);
22 }
23 }
这里需要注意:
getpwuid()返回的不是我们要的用户名,我们需要的是该结构体中的一个变量——pw_name,同样的getgrid()也应做相应的转换。
测试代码如下:
1 #include "head.h"
2 int main(int argc, char *argv[])
3 {
4 DIR *fp;
5 char name[CNT][CNT];
6 int cnt;
7 fp = opendir(argv[1]);
8 if(fp == NULL)
9 {
10 printf("opendir error!! ");
11 exit(1);
12 }
13 cnt = file_name(fp, argv[1], name);
14 str_sort(name, cnt);
15 show(name, cnt);
16 return 0;
17 }
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Linux下开源的DDR压力测试工具曝Linux恶意软件:让树莓派设备挖掘数字货币linux系统中不同颜色的文件夹及根目录介绍软件测试工程师必知必会Linux命令Linux下DNS服务器配置如何成为不可替代的Linux运维工程师?详解Linux进程(作业)的查看和杀死Linux 日志定时轮询流程详解比特币勒索病毒不只Windows系统有,Linux版的来了Linux日志定时轮询流程详解Linux iommu和vfio概念空间解构Linux系统如何低于TCP洪水攻击Linux无损调整分区大小Linux下防火墙配置实例Linux使用Jexus托管Asp.Net Core应用程序Linux中引号的那些事

sales@spasvo.com