Linux中ls命令的实现

ls命令是Linux下最常用的一声令下之一,ls跟dos下的dir命令是同样的都是用来列出目录下的文本,上面大家就来一块寻访ls的实现方式。

Linux下ls命令的贯彻  http://www.linuxidc.com/Linux/2014-12/111079.htm

ls 命令:十七个Linux面试级难题--第一集  http://www.linuxidc.com/Linux/2015-03/114895.htm

ls 命令:十条面试级难点--第二集  http://www.linuxidc.com/Linux/2015-04/115732.htm

#include <dirent.h>
是POSIX.1规范定义的unix类目录操作的头文件,包罗了无数UNIX系统服务的函数原型,例如opendir函数、readdir函数.

opendir函数:

DIR *opendir(const char *js9905com金沙网站 ,pathname);重返值:若成功则赶回指针,若出错则赶回NULL。
struct dirent *readdir(DIR *dp); 再次来到值:若成功则赶回指针,若在目录结尾或出错则赶回NULL。

ls的简短完结:

js9905com金沙网站 1

写makefile

js9905com金沙网站 2

运作测验:

js9905com金沙网站 3

--------------------------------------分割线

见上面程序: 

#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>

int main( int argc, int *argv[] )
{
    DIR                *dir;
    struct dirent    *dirp;
   
    if ( argc != 2 )
    {
        printf( "usage: %s directory_name n", argv[0] );
        return -1;
    }
   
    if ( !(dir=opendir(argv[1])) )
    {
        printf( "can not open %sn", argv[1] );
        return -1;
    }
   
    while ( (dirp=readdir(dir)) != NULL )
    {
        printf( "%sn", dirp->d_name );
    }
   
    closedir( dir );
   
    return 0;
}

 

对中间的多少个重大结构体和函数演说一下。

opendir
opendir()用来张开参数 name 钦赐的目录,并赶回 DISportage* 形态的
目录流,和 open()类似,接下去对目录的读取和查找都要使用此再次回到值,
马到成功则赶回 DIEnclave* 型态的目录流,展开失利则赶回 NULL

readdir()重回参数 dir 目录流的下个目录步入点。    结构 dirent 定义
如下:
struct dirent
{
    long d_ino;                /* inode number */索引节点号
    off_t d_off;                /* offset to this dirent */在目录文件中的偏移
    unsigned short d_reclen;    /* length of this d_name */文件名长
    unsigned char d_type;        /* the type of d_name */文件类型   
    char d_name [NAME_MAX+1];  /* file name (null-terminated) */文件名,最长255字符
}

马到成功则赶回下个目录步向点。有荒唐发生或读取到目录文件尾则再次回到 NULL。

正文长久更新链接地址:http://www.linuxidc.com/Linux/2015-08/121704.htm

js9905com金沙网站 4

本文由js9905com金沙网站-金沙澳门手机版网址发布于计算机,转载请注明出处:Linux中ls命令的实现

您可能还会对下面的文章感兴趣: