linux环境cc++实现ls,ls -l

linux环境cc++实现ls,ls -l,第1张

概述本文章向大家介绍linux环境c/c++实现ls,ls -l,主要包括linux环境c/c++实现ls,ls -l使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

My_ls.cpp

//============================================================================

// name : Hellocpp.cpp

// Author : lingo

// Version :

// copyright : Your copyright notice

// Description : Hello World in C++,Ansi-style

//============================================================================

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

char filename[100][255]; //存储文件名字符串

int filenum = 0;

// 将文件权限描述ID转换为读写权限字符

voID stmode_to_rwx(int mode,char str[]){

strcpy(str,"----------");

if (S_ISDIR(mode)) str[0] = 'd';

if (S_ISCHR(mode)) str[0] = 'c';

if (S_ISBLK(mode)) str[0] = 'b';

if ((mode & S_IRUSR)) str[1] = 'r';

if ((mode & S_IWUSR)) str[2] = 'w';

if ((mode & S_IXUSR)) str[3] = 'x';

if ((mode & S_IRGRP)) str[4] = 'r';

if ((mode & S_IWGRP)) str[5] = 'w';

if ((mode & S_IXGRP)) str[6] = 'x';

if ((mode & S_IROTH)) str[7] = 'r';

if ((mode & S_IWOTH)) str[8] = 'w';

if ((mode & S_IXOTH)) str[9] = 'x';

}

int ls_dir(char *dirpath){

DIR *d; //DIR *opendir(const char *pathname),目录的返回结构体指针

struct dirent *dirfile; //用该结构体保存目录项

struct stat dirfileinfo; //目录项描述结构体

if(!(d = opendir(dirpath))){

printf("error opendir %sn",dirpath);

return -1;

}

while((dirfile = readdir(d))!= NulL){

// 过滤.xx目录项

if(strncmp(dirfile->d_name,".",1) == 0)

continue;

stat(dirfile->d_name,&dirfileinfo);

cout<d_name<<" ";

}

cout<

closedir(d);

return 1;

}

int ls_l_dir(char *dirpath){

DIR *d; //DIR *opendir(const char *pathname),目录的返回结构体指针

struct dirent *dirfile; //用该结构体保存目录项

struct stat dirfileinfo; //目录项描述结构体

if(!(d = opendir(dirpath))){

printf("error opendir %sn",dirpath);

return -1;

}

struct passwd *userinfo;

struct group *groupinfo;

while((dirfile = readdir(d))!= NulL){

// 过滤.xx目录项

if(strncmp(dirfile->d_name,1) == 0)

continue;

strcpy(filename[filenum++],dirfile->d_name); //存储目录项名称

stat(dirfile->d_name,&dirfileinfo); //得到指定文件名的描述信息

userinfo = getpwuID(dirfileinfo.st_uID);

groupinfo = getgrgID(dirfileinfo.st_gID);

char dirauth[11];

stmode_to_rwx(dirfileinfo.st_mode,dirauth);

cout<pw_name<<" "<gr_name<<" "<

printf(" %.12s",4 + ctime(&dirfileinfo.st_mtime));

cout<<" "<d_name;

cout<

}

closedir(d);

return 1;

}

int main(int args,char* argv[]) {

char pwddir[255]; //存储当前工作环境下绝对路径

getcwd(pwddir,255); //得到当前工作环境绝对路径

if( args > 1){

//printf("your command : ./ %s,%s",argv[0],argv[1]);

int i =2;

if(memcmp(argv[1],"-l",i)==0){

ls_l_dir(pwddir); //遍历当前工作环境路径下

}else{

printf("Usage:%s -l n",argv[0]);

}

}else{

ls_dir(pwddir);

}

return 0;

}

ubuntu环境下编译执行后结果:

总结

以上是内存溢出为你收集整理的linux环境c/c++实现ls,ls -l全部内容,希望文章能够帮你解决linux环境c/c++实现ls,ls -l所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1264412.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存