ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:38.02KB ,
资源ID:16745798      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-16745798.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linuxls命令ls命令模拟.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Linuxls命令ls命令模拟.docx

1、Linuxls命令ls命令模拟Linux-ls命令模拟/ ls.c/ wxd/ create by jneeyou on 15/11/13/ Copyright (c) 2015 wxd. All rights reserved./#include #include #include #include ls_fileHandle.h/*主函数*/int main(int argc, char *argv) int mask = 0; bool ret = false; freopen(.err.dat,wb,stderr); if (!init() return -1; mask = getC

2、mdLineArgs(argc,argv); if (mask = -2)/-help命令 getHelpMenu();/显示帮助 else if (mask = ERROR) printf(参数有误,输入./ls -help查看帮助n); else/其他命令 setMaskArray(mask); ret = getDirInfo(., 0); if (!ret) printf(参数有误,输入./ls -help查看帮助n); freeMem(); system(rm -f .err.dat); return 0;/ ls_fileHandle.h/ wxd/ create by jneey

3、ou on 15/11/13/ Copyright (c) 2015 wxd. All rights reserved./#ifndef _LS_FILE_HANDLE_H_#define _LS_FILE_HANDLE_H_/定义bool型#if !defined(bool) #define bool char #define true 1 #define false 0#endif#ifndef ERROR#define ERROR -1#endif#if defined(_STDC_VERSION_) & (_STDC_VERSION_=199901L) /desc 宏函数,输出文件信息

4、 #define printf_c(fontBgColor,fontColor,format,args.) printf(033fontBgColor;fontColorm format0330m,args)#else /desc 输出文件信息 / 带颜色输出,可设置字体颜色和字体背景颜色 extern int printf_c(char fontBgColor, char fontColor, const char *format, .); #endif/desc 获取命令行参数,返回掩码值extern int getCmdLineArgs(int argc, char *argv);/de

5、sc 设置掩码数组/ret 成功返回true,否则返回falseextern bool setMaskArray(int maskValue);/desc 获得文件信息/ret 成功返回true,否则返回falseextern bool getFileInfo(const char *dirName, const char *fileName, unsigned int index);/desc 获得目录信息/ret 成功返回true,否则返回falseextern bool getDirInfo(const char *dirName, int dirLevel);/desc 获得帮助菜单e

6、xtern void getHelpMenu();/desc 释放内存void freeMem();/desc 初始化bool init();#endif / _LS_FILE_HANDLE_H_/ ls_fileHandle.c/ wxd/ create by jneeyou on 15/11/13/ Copyright (c) 2015 wxd. All rights reserved./#include #include #include #include #include #include #include #include #include #include #include #in

7、clude #ifndef ERROR#define ERROR -1#endif#define OK 0#define NUL_POINTER NULL/定义bool,true,false#ifndef bool#define bool char#define true 1#define false 0#endif/帮助文件名#define HELP_FILE helpInfo.dat#define TMP_FILE .tmp/定义 errno_t 型#define errno_t int/定义文件类型#define block_file b#define direct_file d#def

8、ine spec_char_file c#define fifo_device p#define regular_file -#define link_file l#define socket_file s#define BF block_file /块文件#define DF direct_file /目录文件#define CF spec_char_file /特殊字符文件#define FD fifo_device /FIFO设备#define RF regular_file /普通文件#define LF link_file /符号链接文件#define SF socket_file

9、/scoket文件/文件名最大长度#define MAX_FILE_NAME 512/最多子目录个数#define MAX_SUB_DIR 100 /背景色typedef struct BG_COLOR const char BLACK; /黑 const char DARKRED; /深红 const char GREEN; /绿 const char YELLOW; /黄 const char BLUE; /蓝 const char PURPLE; /紫 const char DARKGREEN; /深绿 const char WHITE; /白 const char DEFAULT; /

10、默认 bgColor;/文字背景色static const bgColor font_bgColor = 40, 41, 42, 43, 44, 45, 46, 47, 0 ;/前景色typedef struct FG_COLOR const char BLACK; /黑 const char RED; /红 const char GREEN ; /绿 const char YELLOW ; /黄 const char BLUE; /蓝 const char PURPLE; /紫 const char DARKGREEN; /深绿 const char WHITE; /白 const char

11、 DEFAULT; /默认 fgColor;/文字颜色static const fgColor font_fgColor = 30, 31, 32, 33, 34, 35, 36, 37, 0 ;/文件信息结构体typedef struct File_Info ino_t ino; /节点号 char type; /类型 char perm10; /权限 nlink_t nlink; /硬链接数 char uname32; /用户名 char gname32; /所属组名 off_t size; /大小 time_t mtime; /最后修改时间 char name32; /文件名 char

12、lname32; /链接的文件名 char nameColor; /名字颜色 char lnameColor; /链接文件颜色 fileInfo;#define MAX_FILE_NUM 100/文件信息结构体数组static fileInfo *m_fileInfo = NULL;/已分配空间static unsigned int ALLOC_MEM_LEN = 0; /全局变量/掩码数组,根据每位元素值是否为1选择获取文件哪些/信息,每位元素对应一个ls命令参数,对应关系如下:/ maskArray0 - -l/ maskArray1 - -a/ maskArray2 - -R/ mask

13、Array3 - -r/ maskArray4 - -d/ maskArray5 - -i/ maskArray6 - -S(大写S)/ maskArray7 - -t/ maskArray8 - -m/ maskArray9 - -1(数字1)/ maskArray10 - -help/ maskArray11 - 无参数/ maskArray12.15 - 保留static unsigned char maskArray16 = 0;/掩码数组有效长度#define VALID_LEN_ARRAY 10/保存外部输入的文件名static char fileName12820 = ;/外部文

14、件数目static int extFileNums = 0;/- 函数实现-/检查参数errno_t checkArgement(char arg) static const char allArgs = l,a,R,r,d,i,S,t,m,1; int len = strlen(allArgs); int i = 0; for (i = 0; i _SizeInBytes) return ERROR; ret= strcpy(_Dst, _Src); if (ret = NULL) return ERROR; return OK;/安全打开errno_t fopen_s(FILE * _Fi

15、le, const char * _Filename, const char * _Mode) *_File = fopen(_Filename, _Mode); if (*_File = NULL) return ERROR; return OK;/安全输出errno_t vsprintf_s(char * _DstBuf, size_t _SizeInBytes, const char * _Format,va_list _ArgList) errno_t ret = vsnprintf(_DstBuf, _SizeInBytes, _Format, _ArgList); return r

16、et;/获取命令行参数,返回掩码值int getCmdLineArgs(int argc, char *argv) int maskValue = 0x0000; int fileCount = 0; int i = 0; for (i = 1; i argc; i+) if (!strcmp(argvi, -help) return -2; else if (argvi0 = -) int len = strlen(argvi); int ret = ERROR; while (-len) ret = checkArgement(argvilen); if (ret = ERROR) ret

17、urn ERROR; maskValue |= (0x0001 = 1) & maskValue) & tmp 0) i-; while (tmp 0) if (tmp & maskValue) maskArrayi- = 1; else maskArrayi- = 0; tmp = 1; return true;#if !(defined(_STDC_VERSION_)& _STDC_VERSION_=199901L)/desc 宏函数,带颜色输出,#format,将format对应的参数字符串化(为变量名时,不是变量中的值,而是变量名)#define PRINT_BY_COLOR(font

18、BgColor,Bold,fontColor,format,argsValue) printf(033%d;%02d;%dm#format0330m,fontBgColor,Bold,fontColor,argsValue) /输出文件信息int printf_c(char fontBgColor, char fontColor, const char *format, .) static char printf_buf1024; va_list args; int n = 0; int bold = 0; va_start(args, format); n = vsprintf_s(prin

19、tf_buf, sizeof(printf_buf), format, args); va_end(args); if ( fontBgColor 47 ) fontBgColor = font_bgColor.DEFAULT; if ( fontColor 37 ) fontBgColor = font_fgColor.DEFAULT; if (fontColor = font_fgColor.BLACK) bold = 0; PRINT_BY_COLOR(fontBgColor, bold, fontColor, %s, printf_buf); return n; #endif/通过ui

20、d获得用户名char * getUnameByUid(uid_t uid) struct passwd *m_pw; static char name20 = ; m_pw = getpwuid(uid); if (m_pw = NULL) return NUL_POINTER; strcpy_s(name, sizeof(name), m_pw-pw_name); return name;/通过gid获得组名char * getGnameByGid(gid_t gid) struct group *m_gr; static char name20 = ; m_gr = getgrgid(gi

21、d); if (m_gr = NULL) return NUL_POINTER; strcpy_s(name, sizeof(name), m_gr-gr_name); return name;/ 获取符号链接链接的文件名bool getFileNameBySLink(char *sLinkName,char *buf, size_t bufSize) int len = 0; len = readlink(sLinkName, buf, bufSize); buflen = 0; if (len bufSize) perror(文件名过长,已被截取.); return true;/获取文件访

22、问权限char * getFileAccePermis(mode_t st_mode) static char perm9 = ; char permValue4 = xwr-; int i = 0, len = 9; for (i = 0; i len; i+) if ( st_mode & (0x1 i) permlen - i - 1 = permValuei % 3; else permlen - i - 1 = permValue3; return perm;/获取文件类型char getFileType(mode_t st_mode) switch (st_mode & S_IFM

23、T) case S_IFBLK: return BF; case S_IFDIR: return DF; case S_IFCHR: return CF; case S_IFIFO: return FD; case S_IFREG: return RF; case S_IFLNK: return LF; case S_IFSOCK: return SF; default: return ERROR; /通过文件类型获得文件名颜色char getFileColorByType(const char *fileName,char type) char cmd3512; char ret = fon

24、t_fgColor.BLACK; if (type = DF) return font_fgColor.BLUE; if (type = LF) return font_fgColor.DARKGREEN; if (access(fileName, X_OK) = 0) return font_fgColor.GREEN; /测试是否为压缩文件 if (!system(mkdir tmp) sprintf(cmd0, tar -xf %s -C tmp, fileName); sprintf(cmd1, tar -xzf %s -C tmp, fileName); sprintf(cmd2, tar

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2