当前位置: 首页 > news >正文

【C语言显示Linux系统参数】

在C语言中,可以通过调用Linux系统提供的API来获取和显示系统参数。以下是一些常见的系统参数及其获取方法:

1. 获取系统名称和版本

可以使用uname函数来获取系统名称、版本等信息。

#include <stdio.h>
#include <sys/utsname.h>int main() {struct utsname sysinfo;if (uname(&sysinfo) == -1) {perror("uname");return 1;}printf("系统名称: %s\n", sysinfo.sysname);printf("节点名称: %s\n", sysinfo.nodename);printf("发行版本: %s\n", sysinfo.release);printf("系统版本: %s\n", sysinfo.version);printf("硬件类型: %s\n", sysinfo.machine);return 0;
}

2. 获取CPU信息

可以通过读取/proc/cpuinfo文件来获取CPU信息。

#include <stdio.h>int main() {FILE *fp = fopen("/proc/cpuinfo", "r");if (fp == NULL) {perror("fopen");return 1;}char line[256];while (fgets(line, sizeof(line), fp)) {printf("%s", line);}fclose(fp);return 0;
}

3. 获取内存信息

可以通过读取/proc/meminfo文件来获取内存信息。

#include <stdio.h>int main() {FILE *fp = fopen("/proc/meminfo", "r");if (fp == NULL) {perror("fopen");return 1;}char line[256];while (fgets(line, sizeof(line), fp)) {printf("%s", line);}fclose(fp);return 0;
}

4. 获取系统时间

可以使用time函数获取系统时间。

#include <stdio.h>
#include <time.h>int main() {time_t rawtime;struct tm *timeinfo;time(&rawtime);timeinfo = localtime(&rawtime);printf("当前时间: %s", asctime(timeinfo));return 0;
}

5. 获取系统负载

可以通过读取/proc/loadavg文件来获取系统负载信息。

#include <stdio.h>int main() {FILE *fp = fopen("/proc/loadavg", "r");if (fp == NULL) {perror("fopen");return 1;}char line[256];if (fgets(line, sizeof(line), fp)) {printf("系统负载: %s", line);}fclose(fp);return 0;
}

6. 获取系统运行时间

可以通过读取/proc/uptime文件来获取系统运行时间。

#include <stdio.h>int main() {FILE *fp = fopen("/proc/uptime", "r");if (fp == NULL) {perror("fopen");return 1;}double uptime, idle_time;fscanf(fp, "%lf %lf", &uptime, &idle_time);printf("系统运行时间: %.2f 秒\n", uptime);printf("空闲时间: %.2f 秒\n", idle_time);fclose(fp);return 0;
}

7. 获取网络接口信息

可以通过ioctl函数和ifconfig命令来获取网络接口信息。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <arpa/inet.h>int main() {int fd;struct ifreq ifr;fd = socket(AF_INET, SOCK_DGRAM, 0);if (fd < 0) {perror("socket");return 1;}strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) {printf("IP 地址: %s\n", inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));} else {perror("ioctl");}close(fd);return 0;
}

8. 获取磁盘信息

可以通过statvfs函数获取磁盘使用情况。

#include <stdio.h>
#include <sys/statvfs.h>int main() {struct statvfs buf;if (statvfs("/", &buf) == -1) {perror("statvfs");return 1;}printf("文件系统块大小: %lu\n", buf.f_bsize);printf("总块数: %lu\n", buf.f_blocks);printf("可用块数: %lu\n", buf.f_bfree);printf("可用块数(非超级用户): %lu\n", buf.f_bavail);printf("总文件节点数: %lu\n", buf.f_files);printf("可用文件节点数: %lu\n", buf.f_ffree);return 0;
}

这些代码片段展示了如何在C语言中获取和显示Linux系统的各种参数。你可以根据需要将这些代码组合在一起,或者进一步扩展它们以获取更多的系统信息。

http://www.lryc.cn/news/545411.html

相关文章:

  • 突破Ajax跨域困境,解锁前端通信新姿势
  • Kotlin协变与逆变区别
  • driver中为什么要使用非阻塞赋值
  • 模板字符串【ES6】
  • 通往 AI 之路:Python 机器学习入门-数据结构
  • 我们应该如何优化UI(基于UGUI)
  • CSS3 圆角:实现与优化指南
  • 【网络安全 | 扫描子域+发现真实IP】CloakQuest3r安装使用详细教程
  • Mellanox OFED驱动如何给全局编译添加gcc的编译选项?(subdir-ccflags-y += -Wall)
  • 【愚公系列】《Python网络爬虫从入门到精通》037-文件的存取
  • 【一起学Rust | Tauri2.0框架】单实例应用程序的深入解析:零漏洞实现与优化实战
  • PhyloSuite v1.2.3安装与使用-生信工具049
  • 使用Apache Lucene构建高效的全文搜索服务
  • SSH远程登录并执行命令
  • EasyRTC:支持任意平台设备的嵌入式WebRTC实时音视频通信SDK解决方案
  • Golang语言特性
  • LangPrompt提示词
  • Java 容器之 List
  • ETL-kettle数据转换使用详解
  • 【容器化】低版本docker拉取ubuntn 22.04镜像启动容器执行apt update提示 NO_PUBKEY 871920D1991BC93C
  • Hive-04之存储格式、SerDe、企业级调优
  • Makefile、Make和CMake:构建工具的三剑客
  • The “Rule-of-Zero“ should be followed (s4963)
  • Kotlin语言特性(二):泛型与注解
  • FunPapers[3]:WWW‘25「快手」生成式回归预测观看时长
  • 并发编程1
  • Hadoop之01:HDFS分布式文件系统
  • 从源到目标:深度学习中的迁移学习与领域自适应实践
  • WebRTC与PJSIP:呼叫中心系统技术选型指南
  • 使用IDEA如何隐藏文件或文件夹