当前位置: 首页 > 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系统的各种参数。你可以根据需要将这些代码组合在一起,或者进一步扩展它们以获取更多的系统信息。

相关文章:

  • c++面试常见问题:虚表指针存在于内存哪个分区
  • LeetCodehot 力扣热题100 组合总和
  • 【C】初阶数据结构8 -- 链式二叉树
  • 计算机毕业设计SpringBoot+Vue.js人力资源管理系统(源码+文档+PPT+讲解)
  • MCP与RAG:增强大型语言模型的两种路径
  • 【算法】【并查集】acwing算法基础837. 连通块中点的数量
  • 每日一题——接雨水
  • 制作安装win10系统U盘详细步骤
  • 深入解析HDFS:定义、架构、原理、应用场景及常用命令
  • 【C++并发编程实战】第1章 你好,C++的并发世界!
  • Golang语言特性
  • C语言:51单片机 常用电子元器件讲解(带英文名称)
  • Java-servlet(一)Web应用与服务端技术概念知识讲解
  • Linux top 常用参数记录
  • 扫描局域网可用端口
  • 【计算机网络入门】初学计算机网络(五)
  • 常见的 Spring 项目目录结构
  • MAC OS安装Python教程
  • C++编程指南21 - 线程detach后其注意变量的生命周期
  • JavaScript异步处理确保排序不乱的方案
  • java jsp做网站/国外seo网站
  • 如何做网站么/百度个人中心登录
  • 系部网站建设方案/google海外版
  • 医院网站建设 价格低/新闻发布会
  • b2b网站做排名是什么意思/外贸推广具体是做什么
  • 网站整站截图/郑州做网站公司排名