编写ls命令-第1版

查看帮助
$ man -k direct | grep read
$ man 3 opendir
$ man 3 readdir
$ man 3 closedir

实现思路:
打开目录,读取每一条记录(对应一个文件或子目录)

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

void do_ls(char []);

int main(int ac, char * av[]) {
    if (ac == 1) {
        do_ls(".");
    } else {
        while (--ac) {
            do_ls(* ++av);
        }   
    }   
    return 0;
}

void do_ls(char dirname[]) {
    DIR *dirp;
    struct dirent *dir;
    // 判断dirname是否存在
    if ((dirp = opendir(dirname)) == NULL) {
        printf("can't open %s\n", dirname);
        return;
    }   
    while((dir = readdir(dirp)) != NULL) {
        printf("%s\n", dir->d_name);
    }   
    closedir(dirp);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,243评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 1.Linux下如何用命令查看实时日志(完整命令) tail -f 路径.log查看前多少行 tai-200f 路...
    qianyewhy阅读 2,340评论 0 11
  • 各大Linux发行版软件包管理参考(http://www.freeoa.net/osuport/botinstal...
    IRONYT阅读 7,367评论 0 12
  • 前几天蔡老师给我电话,说即将来深圳,希望一起聚聚,所以就特别盼望聚会的这一天。因为我不会做奶昔,所以她特地嘱咐将教...
    柏云归来阅读 297评论 0 1