简单实现ls -l功能的代码
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功能的代码相关推荐
- Linux系统编程:简单实现ls -R 功能
实现效果 这是系统提供的 这是自己实现的 实现思路 主要是目录项的读取和文件详细信息的获取以及文件类型的判断. 打开目录opendir->读取目录readdir->展示文件名->判断 ...
- 用python做一个购物车编程_利用python实现简单的循环购物车功能示例代码
本文主要给大家介绍了关于python实现循环购物车功能的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 示例代码 # -*- coding: utf-8 -*- __author__ = ...
- python聊天室详细教程_python简单实现聊天室功能(代码教程)
聊天室程序需求: 我们要实现的是简单的聊天室的例子,就是允许多个人同时一起聊天,每个人发送的消息所有人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.如下图: 这里我们首先要 ...
- Linux C语言实现ls -l
Linux下C语言实现ls -l功能 宗旨:技术的学习是有限的,分享的精神是无限的. 需求:用ls -l显示文件夹下所有的文件及属性 分析:1 用ls显示文件夹下的所有文件,首先用opend ...
- 输入目录路径以及名字,能够将该路径下所有文件的属性打印出来,类似ls -l
输入目录路径以及名字,能够将该路径下所有文件的树形打印出来,类似ls -l 主函数代码: #include <stdio.h> #include <sys/stat.h> #i ...
- 在Linux下使用程序实现ls -l 的功能
需求分析 ls -l 的使用方式 ls -l 的基本使用方式有两种,分别是ls -l +文件名.ls -l +目录,如下图所示: 根据图片中得到的结果分析出,ls -l 命令得到的结果包含有文件类型, ...
- 表达式计算器 java代码_Java实现简单的表达式计算器功能示例
本文实例讲述了Java实现简单的表达式计算器功能.分享给大家供大家参考,具体如下: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例 ...
- 简单音乐播放器html+css+基础vue+含源码,有搜索和播放mv功能,代码可直接复制用。
题目:html+css+基础vue实现的简单音乐播放器(含源码),有搜索和播放mv功能,代码可直接复制用. 问题描述: 如果vue刚入门,掌握一些基础语法后就可以写一个简单的音乐播放器来练练手~~如果 ...
- php写字板代码,JS+HTML5 Canvas实现简单的写字板功能示例
本文实例讲述了JS+HTML5 Canvas实现简单的写字板功能.分享给大家供大家参考,具体如下: 先来看运行效果: 具体代码如下: www.jb51.net JS写字板 body,html { pa ...
最新文章
- 基于 OpenCV 的面部关键点检测实战
- python实现数据库连接池_Python实现Mysql数据库连接池
- 【uniapp】Error during WebSocket handshake: Unexpected response code: 302
- spring 通过EsClientFactory注入elasticsearch
- 这个只有1.5M的软件,能让你的网速快3倍
- 深度学习之pytorch(三) C++调用
- rest服务swagger_使用Swagger轻松记录您的Play Framework REST API
- D3.js系列——布局:饼状图和力导向图
- C#基础回顾:正则表达式
- grpc python stream_grpc| python 实战 grpc【h】
- 基础课教材推荐-数字设计、体系结构
- 在C/C++中的struct使用函数指针,而且在C++中的struct还能使用成员函数
- 中国农业大学专业学位计算机,中国农业大学(专业学位)计算机技术考研难吗
- 水的黏度 Viscosity of Water
- Spark问题14之Spark stage retry问题
- C语言 最大公约数与素数探求
- Databuscanal对比
- python 实现 PDF 页面横向纵向旋转
- 传导发射(CE)测试概述
- 网络协议 -- UDP协议(2)单播