加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:26:15 所属栏目:百科 来源:网络整理
导读:展示目录的小程序 展示指定目录的小程序: #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

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

#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: %sn",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",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,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 %sn",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=%sn",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,shell=%s n",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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读