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);
}
