ls命令有许多常见的选项功能,其中 l 选项就是展示文件的详细功能

#include<stdio.h>

#include<unistd.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

#include<string.h>

#include<time.h>

#include<pwd.h>

#include<grp.h>

int main(int argc,char *argv[])

{

if(argc != 2){

printf("./a.out filename\n");

return -1;

}

//调用stat获得文件属性信息

struct stat sb;

stat(argv[1],&sb);

//解析文件属性

//st_mode

char stmode[11]={0};

memset(stmode,'-',sizeof(stmode)-1);

if(S_ISREG(sb.st_mode)) stmode[0]='-';

if(S_ISDIR(sb.st_mode)) stmode[0]='d';

if(S_ISCHR(sb.st_mode)) stmode[0]='c';

if(S_ISBLK(sb.st_mode)) stmode[0]='b';

if(S_ISFIFO(sb.st_mode)) stmode[0]='p';

if(S_ISLNK(sb.st_mode)) stmode[0]='l';

if(S_ISSOCK(sb.st_mode)) stmode[0]='s';

//解析权限

if(sb.st_mode & S_IRUSR) stmode[1]='r';

if(sb.st_mode & S_IWUSR) stmode[2]='w';

if(sb.st_mode & S_IXUSR) stmode[3]='x';

if(sb.st_mode & S_IRUSR) stmode[4]='r';

if(sb.st_mode & S_IWUSR) stmode[5]='w';

if(sb.st_mode & S_IXUSR) stmode[6]='x';

if(sb.st_mode & S_IROTH) stmode[7]='r';

if(sb.st_mode & S_IWOTH) stmode[8]='w';

if(sb.st_mode & S_IXOTH) stmode[9]='x';

//获取时间

struct tm *filetm = localtime(&sb.st_atime);

char timebuf[20]={0};

sprintf(timebuf,"%d月  %d %02d:%02d",filetm->tm_mon+1,filetm->tm_mday,filetm->tm_hour,filetm->tm_min);

printf("%s %ld %s %s %ld %s %s\n",stmode,sb.st_nlink,getpwuid(sb.st_uid)->pw_name,getgrgid(sb.st_gid)->gr_name,sb.st_size,timebuf,argv[1]);

return 0;

}

简单实现ls -l功能的代码相关推荐

  1. Linux系统编程:简单实现ls -R 功能

    实现效果 这是系统提供的 这是自己实现的 实现思路 主要是目录项的读取和文件详细信息的获取以及文件类型的判断. 打开目录opendir->读取目录readdir->展示文件名->判断 ...

  2. 用python做一个购物车编程_利用python实现简单的循环购物车功能示例代码

    本文主要给大家介绍了关于python实现循环购物车功能的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 示例代码 # -*- coding: utf-8 -*- __author__ = ...

  3. python聊天室详细教程_python简单实现聊天室功能(代码教程)

    聊天室程序需求: 我们要实现的是简单的聊天室的例子,就是允许多个人同时一起聊天,每个人发送的消息所有人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.如下图: 这里我们首先要 ...

  4. Linux C语言实现ls -l

    Linux下C语言实现ls -l功能    宗旨:技术的学习是有限的,分享的精神是无限的. 需求:用ls -l显示文件夹下所有的文件及属性   分析:1 用ls显示文件夹下的所有文件,首先用opend ...

  5. 输入目录路径以及名字,能够将该路径下所有文件的属性打印出来,类似ls -l

    输入目录路径以及名字,能够将该路径下所有文件的树形打印出来,类似ls -l 主函数代码: #include <stdio.h> #include <sys/stat.h> #i ...

  6. 在Linux下使用程序实现ls -l 的功能

    需求分析 ls -l 的使用方式 ls -l 的基本使用方式有两种,分别是ls -l +文件名.ls -l +目录,如下图所示: 根据图片中得到的结果分析出,ls -l 命令得到的结果包含有文件类型, ...

  7. 表达式计算器 java代码_Java实现简单的表达式计算器功能示例

    本文实例讲述了Java实现简单的表达式计算器功能.分享给大家供大家参考,具体如下: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例 ...

  8. 简单音乐播放器html+css+基础vue+含源码,有搜索和播放mv功能,代码可直接复制用。

    题目:html+css+基础vue实现的简单音乐播放器(含源码),有搜索和播放mv功能,代码可直接复制用. 问题描述: 如果vue刚入门,掌握一些基础语法后就可以写一个简单的音乐播放器来练练手~~如果 ...

  9. php写字板代码,JS+HTML5 Canvas实现简单的写字板功能示例

    本文实例讲述了JS+HTML5 Canvas实现简单的写字板功能.分享给大家供大家参考,具体如下: 先来看运行效果: 具体代码如下: www.jb51.net JS写字板 body,html { pa ...

最新文章

  1. 基于 OpenCV 的面部关键点检测实战
  2. python实现数据库连接池_Python实现Mysql数据库连接池
  3. 【uniapp】Error during WebSocket handshake: Unexpected response code: 302
  4. spring 通过EsClientFactory注入elasticsearch
  5. 这个只有1.5M的软件,能让你的网速快3倍
  6. 深度学习之pytorch(三) C++调用
  7. rest服务swagger_使用Swagger轻松记录您的Play Framework REST API
  8. D3.js系列——布局:饼状图和力导向图
  9. C#基础回顾:正则表达式
  10. grpc python stream_grpc| python 实战 grpc【h】
  11. 基础课教材推荐-数字设计、体系结构
  12. 在C/C++中的struct使用函数指针,而且在C++中的struct还能使用成员函数
  13. 中国农业大学专业学位计算机,中国农业大学(专业学位)计算机技术考研难吗
  14. 水的黏度 Viscosity of Water
  15. Spark问题14之Spark stage retry问题
  16. C语言 最大公约数与素数探求
  17. Databuscanal对比
  18. python 实现 PDF 页面横向纵向旋转
  19. 传导发射(CE)测试概述
  20. 网络协议 -- UDP协议(2)单播

热门文章

  1. Bilevel Optimization
  2. Unity 各版本下载方法
  3. CentOS8解决不能够使用yum指令的问题
  4. 五、ROS使用serial包进行串口通信
  5. SpringBoot-国际化
  6. 2021宣汉南坝中学高考成绩查询,达州日报社数字报刊平台
  7. 1152 最大值和最小值
  8. 区块链是什么?有什么用?
  9. 挂载ISO镜像文件到Linux系统
  10. 【Python】ItChat 微信控制包