資源簡介
在liunux下C語言實(shí)現(xiàn)ls的-a,-l,-d,等功能。需要可以下載。
代碼片段和文件信息
/***************myls.c*************************
File?Name:????~/lab4/myls.c
Author:????liujun
Date?Written:????2010/7/20
Date?Last?Modified:????2010/7/20
Purpose:???模擬終端上ls的部分功能
Brief?Description:?模擬終端上ls的部分功能
***********************************************/
#include?
#include
#include
#include?
#include?
#include?
#include?
#include?
#include?
void?print_l(struct?dirent?*dirp?struct?stat?buf)
{
????char?permission[11];
????unsigned?int?mask=0700;
????struct?passwd?*uname;
????struct?group?*gname;
????char?*date;
????int?N_BITS?=?3;
????int?i=3;
????int?j=0;
????static?char*?permess[]={“---““--x““-w-““-wx““r--““r-x““rw-““rwx“};
????if?????(S_ISREG(buf.st_mode))//regular
??????permission[0]=‘-‘;
????else?if(S_ISDIR(buf.st_mode))//directory
??????permission[0]=‘d‘;
????else?if(S_ISCHR(buf.st_mode))//character?special
??????permission[0]=‘c‘;
????else?if(S_ISBLK(buf.st_mode))//block?special
??????permission[0]=‘b‘;
????else?if(S_ISFIFO(buf.st_mode))//fifo
??????permission[0]=‘p‘;
????else?if(S_ISLNK(buf.st_mode))//symbolic?link
??????permission[0]=‘l‘;
????else?if(S_ISLNK(buf.st_mode))//socket
??????permission[0]=‘s‘;
????else????????????????????????//unknown
??????permission[0]=‘*‘;
????while(i>0)
????{
????????permission[1+j*3]=permess[(buf.st_mode?&?mask)>>(i-1)*N_BITS][0];
????????permission[2+j*3]=permess[(buf.st_mode?&?mask)>>(i-1)*N_BITS][1];
????????permission[3+j*3]=permess[(buf.st_mode?&?mask)>>(i-1)*N_BITS][2];
????????i--;
????????j++;
????????mask>>=N_BITS;
?????}
?????permission[10]=‘\0‘;
?????printf(“%s?“permission);???
?????printf(“%d?“buf.st_nlink);??
?????uname?=?getpwuid(buf.st_uid);
?????gname?=?getgrgid(buf.st_gid);????????????????
?????printf(“%-10s%-10s“uname->pw_namegname->gr_name);
?????printf(“%-6u“(unsigned?int)buf.st_size);
?????date?=?(char*)ctime(&buf.st_mtime);
?????date[24]=‘\0‘;
?????printf(“%-10s??%-10s\n“datedirp->d_name);?????
}
void?print_i(struct?dirent?*dirp?struct?stat?buf)
{
???//?struct?stat?buf;
???//?stat(dirp->d_name&buf);
????printf(“%u??%-10s??“(unsigned?int)buf.st_inodirp->d_name);
}
void?print_li(struct?dirent?*dirp?struct?stat?buf)
{
????char?permission[11];
????unsigned?int?mask=0700;
????struct?passwd?*uname;
????struct?group?*gname;
????char?*date;
????int?N_BITS?=?3;
????int?i=3;
????int?j=0;
????static?char*?permess[]={“---““--x““-w-““-wx““r--““r-x““rw-““rwx“};
????if?????(S_ISREG(buf.st_mode))//regular
??????permission[0]=‘-‘;
????else?if(S_ISDIR(buf.st_mode))//directory
??????permission[0]=‘d‘;
????else?if(S_ISCHR(buf.st_mode))//character?special
??????permission[0]=‘c‘;
????else?if(S_ISBLK(buf.st_mode))//block?special
??????permission[0]=‘b‘;
????else?if(S_ISFIFO(buf.st_mode))//fifo
??????permission[0]=‘p‘;
????else?if(S_ISLNK(buf.st_mode))//symbolic?link
??????permission[0]=‘l‘;
????else?if(S_ISLNK(buf.st_mode))//socket
??????permission[0]=‘s‘;
????else???????????????????????
評(píng)論
共有 條評(píng)論