资源简介
在liunux下C语言实现ls的-a,-l,-d,等功能。需要可以下载。
代码片段和文件信息
/***************myls.c*************************
File Name: ~/lab4/myls.c
Author: liujun
Date Written: 2010/7/20
Date Last Modified: 2010/7/20
Purpose: 模拟终端上ls的部分功能
Brief Description: 模拟终端上ls的部分功能
***********************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
void print_l(struct dirent *dirp struct stat buf)
{
char permission[11];
unsigned int mask=0700;
struct passwd *uname;
struct group *gname;
char *date;
int N_BITS = 3;
int i=3;
int j=0;
static char* permess[]={“---““--x““-w-““-wx““r--““r-x““rw-““rwx“};
if (S_ISREG(buf.st_mode))//regular
permission[0]=‘-‘;
else if(S_ISDIR(buf.st_mode))//directory
permission[0]=‘d‘;
else if(S_ISCHR(buf.st_mode))//character special
permission[0]=‘c‘;
else if(S_ISBLK(buf.st_mode))//block special
permission[0]=‘b‘;
else if(S_ISFIFO(buf.st_mode))//fifo
permission[0]=‘p‘;
else if(S_ISLNK(buf.st_mode))//symbolic link
permission[0]=‘l‘;
else if(S_ISLNK(buf.st_mode))//socket
permission[0]=‘s‘;
else //unknown
permission[0]=‘*‘;
while(i>0)
{
permission[1+j*3]=permess[(buf.st_mode & mask)>>(i-1)*N_BITS][0];
permission[2+j*3]=permess[(buf.st_mode & mask)>>(i-1)*N_BITS][1];
permission[3+j*3]=permess[(buf.st_mode & mask)>>(i-1)*N_BITS][2];
i--;
j++;
mask>>=N_BITS;
}
permission[10]=‘\0‘;
printf(“%s “permission);
printf(“%d “buf.st_nlink);
uname = getpwuid(buf.st_uid);
gname = getgrgid(buf.st_gid);
printf(“%-10s%-10s“uname->pw_namegname->gr_name);
printf(“%-6u“(unsigned int)buf.st_size);
date = (char*)ctime(&buf.st_mtime);
date[24]=‘\0‘;
printf(“%-10s %-10s\n“datedirp->d_name);
}
void print_i(struct dirent *dirp struct stat buf)
{
// struct stat buf;
// stat(dirp->d_name&buf);
printf(“%u %-10s “(unsigned int)buf.st_inodirp->d_name);
}
void print_li(struct dirent *dirp struct stat buf)
{
char permission[11];
unsigned int mask=0700;
struct passwd *uname;
struct group *gname;
char *date;
int N_BITS = 3;
int i=3;
int j=0;
static char* permess[]={“---““--x““-w-““-wx““r--““r-x““rw-““rwx“};
if (S_ISREG(buf.st_mode))//regular
permission[0]=‘-‘;
else if(S_ISDIR(buf.st_mode))//directory
permission[0]=‘d‘;
else if(S_ISCHR(buf.st_mode))//character special
permission[0]=‘c‘;
else if(S_ISBLK(buf.st_mode))//block special
permission[0]=‘b‘;
else if(S_ISFIFO(buf.st_mode))//fifo
permission[0]=‘p‘;
else if(S_ISLNK(buf.st_mode))//symbolic link
permission[0]=‘l‘;
else if(S_ISLNK(buf.st_mode))//socket
permission[0]=‘s‘;
else
- 上一篇:一个完整的des算法的c语言实现
- 下一篇:shell程序实验详解
相关资源
- 一个完整的des算法的c语言实现
- c语言RSA算法 这是一个完整的rsa算法
- tftp服务器源码,纯c语言
- 严蔚敏《数据结构》的全部代码实现
- LinuxC语言实现CP命令(edsionte.com)
- c++ primer plus 第6版 中文版pdf 高清完整
- C语言指针详解__ppt文件
- FTP客户端程序,c语言编写
- VC写的数字时钟小程序
- C++跑酷游戏
- C++简单的画图程序源代码
- 发送tcp数据包实验设计
- c++ builder实现文件粉碎机的源码
- C语言N皇后打印图形版
- PQ分解法电力系统潮流计算c#版本
- 简单电子英汉词典c++
- Head First_深入浅出C语言(中文版)_带
- C++程序设计语言:第1~3部分原书第4版
- 唯一可译码源代码c语言 含报告
- DES算法CBC运行模式实现
- c++程序设计 谭浩强第二版答案
- 数据结构课程设计-班级通讯录
- AES密码学课程设计带报告
- c++学生信息管理系统附带报告
- C++builder编写的简单科学计算器
- C++ QT中 通过UDP广播获取网络中所有设
- 哈希表操作c语言版
- C语言版拼音输入法源代码
- MFC下利用IE内核实现简单浏览器
- 课程设计哲学家就餐问题报告+代码
评论
共有 条评论