C语言编写获取Linux本地目录及本机信息的小程序实例
展示目录的小程序
展示指定目录的小程序:
#include<unistd.h> #include<stdio.h> #include<dirent.h> #include<string.h> #include<sys/stat.h> #include<stdlib.h> voidprintdir(char*dir,intdepth){ DIR*dp; structdirent*entry; structstatstatbuf; if((dp=opendir(dir))==NULL){ fprintf(stderr,"cannotopendirectory:%s\n",dir); return; } chdir(dir); while((entry=readdir(dp))!=NULL){ lstat(entry->d_name,&statbuf); if(S_ISDIR(statbuf.st_mode)){ /*Foundadirectory,butignore.and..*/ if(strcmp(".",entry->d_name)==0||strcmp("..",entry->d_name)==0){ continue; } printf("%*s%s/\n",depth,"",entry->d_name); /*Recurseatanewindentlevel*/ printdir(entry->d_name,depth+4); }else{ printf("%*s%s\n",depth,"",entry->d_name); } } } intmain(){ /* showdirectory */ printf("Directoryscanof/home:\n"); printdir("/home",0); printf("done.\n"); exit(0); }
根据参数输出目录的结构
#include<unistd.h> #include<stdio.h> #include<dirent.h> #include<string.h> #include<sys/stat.h> #include<stdlib.h> voidprintdir(char*dir,intdepth){ DIR*dp; structdirent*entry; structstatstatbuf; if((dp=opendir(dir))==NULL){ fprintf(stderr,"cannotopendirectory:%s\n",dir); return; } chdir(dir); while((entry=readdir(dp))!=NULL){ lstat(entry->d_name,&statbuf); if(S_ISDIR(statbuf.st_mode)){ /*Foundadirectory,butignore.and..*/ if(strcmp(".",entry->d_name)==0||strcmp("..",entry->d_name)==0){ continue; } printf("%*s%s/\n",depth,"",entry->d_name); /*Recurseatanewindentlevel*/ printdir(entry->d_name,depth+4); }else{ printf("%*s%s\n",depth,"",entry->d_name); } } } intmain(intargc,char*argv[]){ /* showdirectory */ char*topdir="."; if(argc>=2){ topdir=argv[1]; } printf("Directoryscanof%s:\n",topdir); printdir(topdir,0); printf("done.\n"); exit(0); }
获取主机基本信息
获取主机用户信息:
#include<sys/types.h> #include<pwd.h> #include<stdio.h> #include<unistd.h> intmain(){ uid_tuid; gid_tgid; structpasswd*pw; uid=getuid(); gid=getgid(); printf("Useris%s\n",getlogin()); printf("UserIDs:uid=%d,gid=%d\n",uid,gid); pw=getpwuid(uid); printf("UIDpasswdentry:\nname=%s,uid=%d,gid=%d,home=%s,shell=%s\n",pw->pw_name,pw->pw_uid,pw->pw_gid,pw->pw_dir,pw->pw_shell); pw=getpwnam("root"); printf("rootpasswdentry:\n"); printf("name=%s,uid=%d,gid=%d,home=%s,shell=%s\n",pw->pw_name,pw->pw_uid,pw->pw_gid,pw->pw_dir,pw->pw_shell); exit(0); }
获取主机自身信息:
#include<sys/utsname.h> #include<unistd.h> #include<stdio.h> intmain(){ charcomputer[256]; structutsnameuts; if(gethostname(computer,255)!=0||uname(&uts)<0){ fprintf(stderr,"Couldnotgethostinformation\n"); exit(1); } printf("Computerhostnameis%s\n",computer); printf("Systemis%son%shardware\n",uts.sysname,uts.machine); printf("Nodenameis%s\n",uts.nodename); printf("Versionis%s,%s\n",uts.release,uts.version); exit(0); }