打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ls code
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>

int main(int argc, char *argv[])
{
        DIR *dp;
        struct dirent *dirp;
        char path[MAXNAMLEN + 1];
        struct stat sb;
        char mode[10];

        const char *time_fmt = "%Y-%m-%d %H:%M:%S";
        char fdate[20];

        if (argc == 1)
        {
                strcpy(path, ".");
        }
        else if (argc == 2)
        {
                strcpy(path, argv[1]);
        }
        else
        {
                printf("cannot ls too few directories.\n");
                return 0;
        }

        if ((dp = opendir(path)) == NULL)
        {
                printf("cannot open this directories.\n");
                return 0;
        }

        while ((dirp = readdir(dp)) != NULL)
        {
                stat(dirp->d_name, &sb);
                mode[9] = (sb.st_mode & S_IFDIR) ? ‘d‘ : ‘-‘;
                if (sb.st_mode & S_IFIFO)
                        mode[9] = ‘i‘;
                else if (sb.st_mode & S_IFCHR)
                        mode[9] = ‘c‘;
                else if (sb.st_mode & S_IFDIR)
                        mode[9] = ‘d‘;
                else if (sb.st_mode & S_IFBLK)
                        mode[9] = ‘b‘;
                else if (sb.st_mode & S_IFREG)
                        mode[9] = ‘-‘;
                else if (sb.st_mode & S_IFLNK)
                        mode[9] = ‘l‘;
                else if (sb.st_mode & S_IFSOCK)
                        mode[9] = ‘s‘;
                else if (sb.st_mode & S_IFWHT)
                        mode[9] = ‘w‘;
                else if (sb.st_mode & S_ISUID)
                        mode[9] = ‘u‘;
                else if (sb.st_mode & S_ISGID)
                        mode[9] = ‘g‘;
                else
                        mode[9] = ‘ ‘;

                strftime(fdate, sizeof(fdate), time_fmt, localtime(&(sb.st_ctime)));
                printf("%crwxr--r-- %5d %5d %8d", mode[9],sb.st_uid, sb.st_gid, sb.st_size);
                printf("  %20s  %-16s\n", fdate, dirp->d_name);
        }

        closedir(dp);

        return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C语言字符串函数大全
ls命令的实现(2)
操作系统第四次实验报告——文件系统之使用LinuxAPI实现ls -lai命令
用C语言编写一个Linux下的简单shell程序
framebuff操作程序
【原创】自制编程语言-6 输入语句
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服