首页 > 编程 > C > 正文

C语言编写获取Linux本地目录及本机信息的小程序实例

2020-01-26 14:38:50
字体:
来源:转载
供稿:网友

展示目录的小程序
展示指定目录的小程序:

#include <unistd.h>#include <stdio.h>#include <dirent.h>#include <string.h>#include <sys/stat.h>#include <stdlib.h> void printdir(char *dir,int depth){  DIR *dp;  struct dirent *entry;  struct stat statbuf;   if((dp = opendir(dir)) == NULL){    fprintf(stderr, "cannot open directory: %s/n", dir);    return;  }   chdir(dir);  while((entry = readdir(dp)) != NULL){    lstat(entry->d_name,&statbuf);    if(S_ISDIR(statbuf.st_mode)){      /*Found a directory,but ignore . and ..*/      if(strcmp(".",entry->d_name) == 0 || strcmp("..",entry->d_name) == 0){        continue;      }      printf("%*s%s/ /n",depth,"",entry->d_name);      /*Recurse at a new indent level*/      printdir(entry->d_name,depth+4);    }else{      printf("%*s%s /n",depth,"",entry->d_name);    }   }}int main(){  /*  show directory  */  printf("Directory scan of /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> void printdir(char *dir,int depth){  DIR *dp;  struct dirent *entry;  struct stat statbuf;   if((dp = opendir(dir)) == NULL){    fprintf(stderr, "cannot open directory: %s/n", dir);    return;  }   chdir(dir);  while((entry = readdir(dp)) != NULL){    lstat(entry->d_name,&statbuf);    if(S_ISDIR(statbuf.st_mode)){      /*Found a directory,but ignore . and ..*/      if(strcmp(".",entry->d_name) == 0 || strcmp("..",entry->d_name) == 0){        continue;      }      printf("%*s%s/ /n",depth,"",entry->d_name);      /*Recurse at a new indent level*/      printdir(entry->d_name,depth+4);    }else{      printf("%*s%s /n",depth,"",entry->d_name);    }   }}int main(int argc, char* argv[]){  /*  show directory  */  char *topdir = ".";  if(argc >= 2){    topdir = argv[1];  }  printf("Directory scan of %s:/n",topdir);  printdir(topdir,0);  printf("done. /n");     exit(0);}

获取主机基本信息
获取主机用户信息:

#include <sys/types.h>#include <pwd.h>#include <stdio.h>#include <unistd.h> int main(){  uid_t uid;  gid_t gid;   struct passwd *pw;  uid = getuid();  gid = getgid();   printf("User is %s/n",getlogin());   printf("User IDs: uid=%d, gid=%d /n", uid, gid);   pw = getpwuid(uid);  printf("UID passwd entry: /n 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);   pw = getpwnam("root");  printf("root passwd entry: /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>  int main(){  char computer[256];  struct utsname uts;  if(gethostname(computer, 255) != 0 || uname(&uts) < 0){    fprintf(stderr, "Could not get host information /n");    exit(1);  }   printf("Computer host name is %s /n",computer);  printf("System is %s on %s hardware /n",uts.sysname, uts.machine);  printf("Nodename is %s /n",uts.nodename);  printf("Version is %s , %s /n",uts.release, uts.version);   exit(0);}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选