免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5379 | 回复: 33
打印 上一主题 下一主题

[网络] 如何实现linux的ls命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-18 17:46 |只看该作者 |倒序浏览
怎么实现linux的ls命令,用opendir readdrir,,不需要带参数功能  -l -a 不需要

如果有人知道可以告诉我吗,谢谢

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
2 [报告]
发表于 2014-03-19 08:53 |只看该作者
APUE上有例子,用struct  stat

论坛徽章:
0
3 [报告]
发表于 2014-03-19 09:04 |只看该作者
回复 2# bikong0411


    我知道APUE有例子,,struct  stat是什么意思??可以大概讲讲思路吗

论坛徽章:
0
4 [报告]
发表于 2014-03-19 09:09 |只看该作者
回复 2# bikong0411


    而且我的要求是用opendir和readdir实现的,不需要参数,,只是ls就可以了,然后列出目录以及文件

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
5 [报告]
发表于 2014-03-19 09:39 |只看该作者
你都知道用opendir和readir实现了,还在等什么?等别人直接贴代码?

论坛徽章:
0
6 [报告]
发表于 2014-03-19 09:55 |只看该作者
回复 5# timespace


    我需要的是思路,我知道这两个东西,但是不知道怎么实现。。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2014-03-19 09:59 |只看该作者
回复 6# yan_zl


    这还需要什么思路?

用 opendir 把目录打开,把 readdir 放在循环里面遍历输出就完了。

要实在不会,那就先看看别人是怎么实现的吧,busybox 和 coreutils 里面都有 ls 的实现,前者更简单些。

论坛徽章:
0
8 [报告]
发表于 2014-03-19 11:12 |只看该作者
回复 7# MMMIX

我有看代码,,是不知道如何理解

    int main(int argc, char* argv[])
{
        DIR *dp;
        struct dirent  *dirp;

       if (argc!= 2)
       {
           err_quit();
         }

      if((dp = opendir(argv[1])) == NULL)
      {
          err_sys("can't open %s ", argv[1]);
        }

      while((diep = readdir(dp)) != NULL)
      {
           printf("%s\n", dirp->d_name);
       }

     close(dp);
      exit(0);

}

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
9 [报告]
发表于 2014-03-19 13:30 |只看该作者
这还能理解不了?

论坛徽章:
0
10 [报告]
发表于 2014-03-19 14:23 |只看该作者
回复 9# bfdhczw


   是的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP