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

Dawn ·
更新时间:2024-11-01
· 769 次阅读

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

#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); } 您可能感兴趣的文章:C语言编写Linux守护进程实例linux安装mysql和使用c语言操作数据库的方法 c语言连接mysqllinux使用gcc编译c语言共享库步骤linux根据pid获取进程名和获取进程pid(c语言获取pid)linux c语言操作数据库(连接sqlite数据库)linux下C语言中的mkdir函数与rmdir函数浅析如何在c语言中调用Linux脚本深入分析Linux下如何对C语言进行编程Linux系统中C语言编程创建函数fork()执行解析linux下 C语言对 php 扩展



c语言编写 程序 小程序 Linux C语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号