实现自己的ls命令(上)

2010年6月19日 由 edsionte 留言 »

如果你跟我一样是linux下C编程的初学者,那么动手实现一些linux命令是十分有必要的。本文为你所描述的是常用ls命令。ls命令有众多选项,本文中所描述的my_ls.c程序仅实现了-l和-a选项。

ls命令加入-l选项可以使每个文件单独成一行,并且显示文件的属性。比如:

edsionte@edsionte-laptop:~/code$ ls -l
总用量 232
-rwxr-xr-x 1 edsionte edsionte  9530 2010-06-18 11:26 error
-rw-r--r-- 1 edsionte edsionte   756 2010-06-19 14:39 error.c
-rw-r--r-- 1 edsionte edsionte   755 2010-06-18 11:32 error.c~
-rw------- 1 edsionte edsionte     0 2010-06-16 12:40 example_62.c

ls命令加入-a选项可以显示隐藏文件。linux中隐藏文件是以 . 开头的。比如:

edsionte@edsionte-laptop:~/code$ ls -a
.             example_65.c    my_cdvc       my_mv
..            example_68_1.c  my_cdvc.c     my_mv.c

.表示当前目录,..表示当前目录的父目录。

当然这两个选项可以同时使用,比如:

edsionte@edsionte-laptop:~/code$ ls -al
总用量 240
drwxr-xr-x  3 edsionte edsionte  4096 2010-06-20 12:10 .
drwxr-xr-x 46 edsionte edsionte  4096 2010-06-20 12:10 ..
-rwxr-xr-x  1 edsionte edsionte  9530 2010-06-18 11:26 error
-rw-r--r--  1 edsionte edsionte   756 2010-06-19 14:39 error.c
-rw-r--r--  1 edsionte edsionte   755 2010-06-18 11:32 error.c~
-rw-------  1 edsionte edsionte     0 2010-06-16 12:40 example_62.c
edsionte@edsionte-laptop:~/code$ ls -l -a
总用量 240
drwxr-xr-x  3 edsionte edsionte  4096 2010-06-20 12:10 .
drwxr-xr-x 46 edsionte edsionte  4096 2010-06-20 12:10 ..
-rwxr-xr-x  1 edsionte edsionte  9530 2010-06-18 11:26 error
-rw-r--r--  1 edsionte edsionte   756 2010-06-19 14:39 error.c

本文所述的my_ls.c程序就要实现这种功能。在了解本程序中所有函数之前,请先看一下本程序的流程图:点这里(本blog上传图片有点问题,正在解决中……)。

现在对本程序中的各个函数做以大致说明。

(1)void my_err(const char*,int,int);和void my_err2(const char*,int);

错误捕获函数。详细实现过程请点这里

(2)void display_dir(int flag_param,char*path);

如果命令中含有目录,则进入此函数。此函数将获取path目录下的文件总数以及所有文件名(包括隐藏文件)。流程图点这里

(3)void display(int flag,char*pathname);

pathname是一个文件的完整路径名,本函数首先从完整的路径名中解析出文件名,再根据flag进入不同的函数。流程图点这里

(4)void display_single(char*);

如果参数中不含任何选项或者仅含-a,则进入此函数。本函数直接显示出目录下的所有文件名,并且实现文件名左对齐。

(5)void display_attribute(struct stat,char*);

如果命令中含有-l则进入本函数,显示出文件的各种属性。

在本文的上班部分中主要为您理清本程序的大体结构,在下半部分中将详细分析源代码。

广告位

发表回复

windows 7 ultimate product key

windows 7 ultimate product key

winrar download free

winrar download free

winzip registration code

winzip registration code

winzip free download

winzip free download

winzip activation code

winzip activation code

windows 7 key generator

windows 7 key generator

winzip freeware

winzip freeware

winzip free download full version

winzip free download full version

free winrar download

free winrar download

free winrar

free winrar

windows 7 crack

windows 7 crack

windows xp product key

windows xp product key

windows 7 activation crack

windows7 activation crack

free winzip

free winzip

winrar free download

winrar free download

winrar free

winrar free

download winrar free

download winrar free

windows 7 product key

windows 7 product key