当前位置:  技术问答>linux和unix

期末作业,实现ls命令

    来源: 互联网  发布时间:2016-12-08

    本文导语:  问下大体思路,谢谢! | #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  // 转换时间显示格式 char * ptime(time_t tv) {     static char t[64];     struct tm   tmv;     s...

问下大体思路,谢谢!

|
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

// 转换时间显示格式
char * ptime(time_t tv)
{
    static char t[64];
    struct tm   tmv;

    strftime(t, 20, "%Y/%m/%d %T", localtime(&tv));
    return t;
}

int main(int argc, char *argv[])
{
    char   szMode[16];    // 权限信息
    char   szUser[64];    // 用户名称
    char   szGrp[64];     // 组名称
    char   szTime[64];    // 文件时间

    DIR           *dp;

    struct dirent *dirp;
    struct stat    st;

    struct passwd *pw;
    struct group  *pg;

    if( argc != 2 )
    {
        printf("usage: %s n", argv[0]);
        exit(0);
    }

    /* 打开目录 */
    if( (dp = opendir(argv[1])) == NULL )
    {
        perror(argv[1]);
        exit(1);
    }

    if( chdir(argv[1]) d_name, &st) pw_name);

        // 获取组名称
        if( (pg = getgrgid(st.st_gid)) == NULL )
            sprintf(szGrp, "%d", st.st_gid);
        else
            strcpy(szGrp, pg->gr_name);

        strcpy(szTime, ptime(st.st_mtime));
        printf("%s %4d %16s %16s %16ld %s %sn", szMode, st.st_nlink, szUser, szGrp, (long)(st.st_size), szTime, dirp->d_name);
    }

    /* 关闭目录 */
    closedir(dp);
    exit(0);
}

|
http://blog.csdn.net/subfate/archive/2011/01/06/6120505.aspx
抄人家的,自己作了点修改。

|
opendir打開目錄,然後readdir讀目錄,dirent結構體中的d_name就是文件名。
如果樓主想顯示詳細信息(類似于ls -l),可以用stat讀出文件詳細信息。
如果再要顯示文件的用戶和組,可能用到getpwuid和getgrgid。

|
strace ls
看一下调用过程,分析一下用到了哪些函数,是怎么写的

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 作业控制中的前台作业和后台作业。
  • 进程组,会话,和作业是什么关系?
  • sql server维护计划自动备份数据库作业执行失败会自动生成abc82作业的解决办法
  • Node.js 作业管理器 neuron
  • Java批量作业框架 Java Batch Job Framework
  • Ganglia的批量作业监控插件 Job Monarch
  • 作业调度工具 xjobs
  • 作业调度服务器 Gearmand
  • Java作业调度 Oddjob
  • 作业任务调度引擎 JobServer
  • NOSQL iis7站长之家
  • 对于操作系统的程序接口,作业接口,单内核,微内核到底有什么区别?
  • Hadoop作业调度管理系统 Corona
  • 怎么写linux和windows2000的架构区别!我要作业!谢谢
  • 怎样取消一个正在打印的作业?
  • 急,急!!!!我的计划cron作业为什么起不来!!!来着有分
  • 急!急!!急!!!我的计划cron作业为什么起不来,请问如何解决?
  • Java批量作业执行框架 MyBatchFramework
  • 一道计算作业优先数的题目___八股考试,我想学东西!
  • 关于使用jet的一个问题,绝对给分,在线等待!要交作业,大家帮帮我吧!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3