亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ls.c

?? 實現Shell
?? C
字號:
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>	/*int getopt (int argc, char **argv, const char *options)*/
#include <dirent.h>
#include <pwd.h>
#include <grp.h>
#include <time.h>
#include <assert.h>

static const char *progname = "ls";
static int aflag = 0;
static int lflag = 0;
static int nflag = 0;

static void
show_mode(mode_t mode)
{
    char c = '?';
    
    if (S_ISDIR(mode)) {
        c = 'd';
    } else if (S_ISREG(mode)) {
        c = '-';
    } else if (S_ISCHR(mode)) {
        c = 'c';
    } else if (S_ISBLK(mode)) {
        c = 'b';
#ifdef S_ISSOCK
    } else if (S_ISSOCK(mode)) {
        c = 's';
#endif
    } else if (S_ISFIFO(mode)) {
        c = 'f';
    }
    
    putchar(c);
    putchar((mode & S_IRUSR) ? 'r' : '-');
    putchar((mode & S_IWUSR) ? 'w' : '-');
    putchar((mode & S_IXUSR) ? 'x' : '-');
    putchar((mode & S_IRGRP) ? 'r' : '-');
    putchar((mode & S_IWGRP) ? 'w' : '-');
    putchar((mode & S_IXGRP) ? 'x' : '-');
    putchar((mode & S_IROTH) ? 'r' : '-');
    putchar((mode & S_IWOTH) ? 'w' : '-');
    putchar((mode & S_IXOTH) ? 'x' : '-');
}

static void
show_user(uid_t uid)
{
    struct passwd *pwd;
    
    pwd = getpwuid(uid);
    if (!nflag && pwd) {
        printf(" %6s", pwd->pw_name);
    } else {
        printf(" %6u", (unsigned) uid);
    }
}

static void
show_group(gid_t gid)
{
    struct group *grp;
    
    grp = getgrgid(gid);
    if (!nflag && grp) {
        printf(" %6s", grp->gr_name);
    } else {
        printf(" %6u", (unsigned) gid);
    }
}

static void
show_time(time_t t, time_t now)
{
    struct tm *tm;
    char buffer[80];
    const time_t delta = 7905600;       /* 366/2 * 12 * 3600 seconds */
    size_t n = 0;

    tm = localtime(&t);
    if (now != (time_t) -1 && t < now - delta) {
        n = strftime(buffer, sizeof(buffer), "%b %d  %Y", tm);
    } else {
        n = strftime(buffer, sizeof(buffer), "%b %d %H:%M", tm);
    }
    if (n) {
        printf(" %12s", buffer);
    } else {
        printf(" %12lu", (unsigned long) t);
    }
}

static void
ls(const char *directory)
{
    DIR *d;
    struct dirent *e;
    time_t now;
    int blocks;
    int file;
    struct stat sd;
    d = opendir(directory);
    if (! d) {
    	file=open(directory,0);
    	if(file==-1)		/*如果路徑名代表一個存在的文件則顯示該文件,否則提示出錯*/
        	perror(progname);
        else {printf("%s\n",directory); close(file);}
        return;
    }

    if (chdir(directory) == -1) {
        perror(progname);
        return;
    }

    now = time(NULL);
    printf("%s:\n",directory) ;
    while (1) {
        e = readdir(d);
        if (! e) {
            break;
        }
        if (aflag || e->d_name[0] != '.') { 	/*列出所有文件或者該文件不是隱藏文件*/
        	struct stat s;
                if (stat(e->d_name, &s) == -1) {
                    fprintf(stderr, "%s: %s: ", progname, e->d_name);
                    perror(NULL);
                    continue;
                }
            if (lflag || nflag) {
                show_mode(s.st_mode);		/*file type */
                printf(" %4d", s.st_nlink);	/*number of links*/
                show_user(s.st_uid);		/*user ID of owner*/
                show_group(s.st_gid);		/*group ID of owner*/
                printf(" %9lu", s.st_size);	/*size in bytes*/
                printf(" %9lu", s.st_blocks);	/*number of 512 byte blocks allocated*/
                show_time(s.st_mtime, now);	/*time of last modification*/
                printf(" %s", e->d_name);	/*file name*/
                if (S_ISDIR(s.st_mode)) printf("/");
                else if ((s.st_mode & S_IXUSR)||(s.st_mode & S_IXGRP)||(s.st_mode & S_IXOTH)) printf("*");
                printf("\n");
            } else {
                printf("%s", e->d_name);
                if (S_ISDIR(s.st_mode)) printf("/");
                else if ((s.st_mode & S_IXUSR)||(s.st_mode & S_IXGRP)||(s.st_mode & S_IXOTH)) printf("*");
                printf("\n");
            }
        }
    }

    closedir(d);

}

int
main(int argc, char **argv)
{
    char *old_dir;
    int size;
    int file;
    old_dir = path_alloc(&size);
    if (getcwd(old_dir,size) == NULL)
    	err_sys("getcwd failed");
    	
    int c;
	int i;
    while ((c = getopt(argc, argv, "aln")) >= 0) {	/*When there are no more options to be parsed, it returns -1*/
        switch (c) {
        case 'a':
            aflag = 1;
            break;
        case 'l':
            lflag = 1;
            break;
        case 'n':
            nflag = 1;
            break;
        case '?':	/*If an option that requires an argument is found, but there is no argument present*/
            exit(EXIT_FAILURE);
        }
    }
    /*Variable: int optind

This variable is set by getopt to the index of the next element of the argv array to be processed. Once getopt has found all of the option arguments, you can use this variable to determine where the remaining non-option arguments begin. The initial value of this variable is 1. 

*/
    if (argc == optind) {
        ls(".");
    } else {
        for (i = optind; i < argc; i++) {	
            if (chdir(old_dir) == -1) {
        	perror(progname);
        	return;
    	    }
            ls(argv[i]);
            printf("\n");

        }
    }

    return EXIT_SUCCESS;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产视频a| 91麻豆国产自产在线观看| 99在线精品一区二区三区| 欧美区在线观看| 99久久99精品久久久久久| 3atv在线一区二区三区| 中文文精品字幕一区二区| 午夜精品久久久久久| 一本在线高清不卡dvd| 久久一区二区视频| 亚洲成av人影院| av中文字幕一区| 久久久久久久久久久99999| 日韩av中文字幕一区二区三区 | 免费高清视频精品| 欧美在线影院一区二区| 欧美国产一区在线| 国内精品嫩模私拍在线| 欧美福利视频一区| 亚洲专区一二三| av欧美精品.com| 国产精品午夜春色av| 韩国av一区二区| 欧美mv日韩mv亚洲| 蜜桃久久久久久| 欧美日韩国产免费一区二区| 午夜欧美视频在线观看 | 亚洲精品成a人| 99视频在线观看一区三区| 2021久久国产精品不只是精品| 麻豆精品视频在线| 日韩一区二区在线播放| 美国十次综合导航| 久久午夜色播影院免费高清| 久久国产精品区| 久久婷婷国产综合国色天香| 国产一区二区中文字幕| 久久亚洲影视婷婷| 国产高清在线精品| 国产欧美日韩精品在线| 成人黄色片在线观看| 中文字幕一区免费在线观看| 91日韩在线专区| 亚洲一二三级电影| 欧美猛男男办公室激情| 青椒成人免费视频| 久久女同互慰一区二区三区| 国产精品99久久久久久久vr | jlzzjlzz亚洲女人18| 亚洲男同性恋视频| 欧美日韩日日摸| 美女网站一区二区| 亚洲国产精品成人综合色在线婷婷| www.成人在线| 亚洲国产日韩一级| 亚洲精品在线一区二区| 成人白浆超碰人人人人| 亚洲一卡二卡三卡四卡| 日韩一区二区精品葵司在线| 国产一区免费电影| 亚洲精品va在线观看| 欧美另类久久久品| 国产一区二区在线电影| 亚洲欧美日韩小说| 欧美一级精品在线| 不卡的电影网站| 日韩av电影一区| 国产精品国产a级| 6080午夜不卡| 成人a级免费电影| 首页国产欧美久久| 国产欧美一区二区精品婷婷| 91国偷自产一区二区开放时间 | 欧美欧美欧美欧美首页| 国产精品99久久久久久似苏梦涵 | 亚洲激情成人在线| 精品盗摄一区二区三区| 色爱区综合激月婷婷| 狠狠色狠狠色综合系列| 亚洲综合免费观看高清在线观看| 91精品啪在线观看国产60岁| 91在线观看美女| 黄色日韩网站视频| 亚洲国产精品一区二区久久| 国产欧美日韩三级| 欧美xxxxxxxx| 欧美日韩高清在线播放| 一本色道久久综合亚洲精品按摩| 国产精品1区2区3区在线观看| 亚洲.国产.中文慕字在线| 1024成人网色www| 日本一区二区三区免费乱视频 | 国产91综合一区在线观看| 免费成人在线播放| 亚洲电影你懂得| 亚洲一区二区不卡免费| 中文字幕色av一区二区三区| 国产亚洲精品久| 精品国产1区二区| 日韩欧美一区在线观看| 欧美夫妻性生活| 精品视频资源站| 色婷婷亚洲精品| 不卡的看片网站| 国产精品自拍av| 免费在线一区观看| 日韩一区二区影院| 91精品婷婷国产综合久久竹菊| 色综合久久天天| 国模冰冰炮一区二区| 亚洲一区在线视频观看| 成人欧美一区二区三区白人| 亚洲精品一区二区三区精华液| 精品久久久网站| 91精品国产综合久久久久久久久久 | 日韩亚洲欧美一区二区三区| 日本韩国精品一区二区在线观看| 国产黑丝在线一区二区三区| 免费视频最近日韩| 日韩 欧美一区二区三区| 欧美伦理影视网| 欧美熟乱第一页| 久久国内精品视频| 成人欧美一区二区三区在线播放| 中文字幕精品一区二区三区精品| 日韩欧美国产午夜精品| 日韩高清在线不卡| 丝袜美腿亚洲色图| 日韩欧美在线观看一区二区三区| 欧美激情一区二区在线| 免费在线看成人av| www.日本不卡| 亚洲精品在线网站| 一区二区三国产精华液| 国产精品影音先锋| 欧美色国产精品| 亚洲伦理在线精品| 麻豆精品在线播放| 欧美日韩一区二区在线观看视频| 精品久久久久久久久久久院品网| 一区二区三区在线观看网站| 黄色资源网久久资源365| 欧美伦理影视网| 亚洲天堂精品在线观看| 国产高清一区日本| 欧美一区二区女人| 午夜国产不卡在线观看视频| www.日韩精品| 中文字幕在线观看不卡| 美女任你摸久久| 在线综合+亚洲+欧美中文字幕| 久久久综合九色合综国产精品| 麻豆精品在线视频| 欧美一区二区久久| 亚洲国产精品麻豆| 欧美三级资源在线| 国产精品久久久久久久久图文区 | 狠狠色丁香九九婷婷综合五月| 91在线码无精品| 中文字幕亚洲精品在线观看| 韩国精品主播一区二区在线观看 | 欧美一卡二卡三卡| 亚洲免费av高清| 成人精品免费看| 久久综合九色综合欧美亚洲| 日本不卡在线视频| 欧美午夜精品一区二区蜜桃| 亚洲精品videosex极品| 成人va在线观看| 一区精品在线播放| 国产成人在线影院| 国产精品动漫网站| 99久久精品免费看| 国产精品色婷婷| 91在线观看下载| 国产欧美一区二区精品忘忧草 | 污片在线观看一区二区| 欧美另类一区二区三区| 麻豆中文一区二区| 欧美成人欧美edvon| 国产呦精品一区二区三区网站| 精品三级在线看| 国产成人午夜视频| 成人免费视频在线观看| 91香蕉视频mp4| 五月天中文字幕一区二区| 欧美日韩一区二区不卡| 麻豆极品一区二区三区| 91精品国产色综合久久| 久久av老司机精品网站导航| 国产免费观看久久| av一区二区三区四区| 亚洲国产欧美在线| 91国产精品成人| 人人爽香蕉精品| 欧美国产亚洲另类动漫| 97久久精品人人做人人爽| 日韩精品国产精品| 欧美福利一区二区| 成人一区在线观看|