1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
/**********************************************************
* Author : oyjb
* Email : jbouyang@126.com
* Last modified : 2015-09-13 22:37
* Filename : my_ls.c
* Description : copy right for oyjb
* *******************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>
#define MAX 1024
void
my_ls(
char
*root);
int
main(
int
argc,
char
*argv[])
{
if
(argc < 2)
{
printf
(
"%s\n"
,
"wrong usage."
);
exit
(1);
}
my_ls(argv[1]);
exit
(0);
}
void
my_ls(
char
*root)
{
DIR *dir;
// get directry's information,then get every file and directry
struct
dirent *ptr;
int
count;
dir = opendir(root);
//open directory
if
(dir == NULL)
{
perror
(
"fail to open dir"
);
exit
(1);
}
errno
= 0;
while
((ptr = readdir(dir)) != NULL)
//Sequential read every dirent
{
if
(
strcmp
(ptr->d_name,
"."
) == 0 ||
strcmp
(ptr->d_name,
".."
) == 0)
continue
;
printf
(
"%s\t"
, ptr->d_name);
//print file's name
++count;
if
(count % 5 == 0)
printf
(
"\n"
);
}
if
(
errno
!= 0)
{
perror
(
"fail to read dir"
);
exit
(1);
}
closedir(dir);
//close dir
}
|
实现自己的ls命令
最新推荐文章于 2021-02-25 14:00:00 发布