sysctl —看系统是否支持

检索系统信息和允许适当的进程设置系统信息。

头文件

#include < sys/sysctl.h >

函数原型

int sysctl(const int *name,u_int namelen,void *oldp,size_t *oldlenp,const void *newp,size_t newlen);

函数说明

name 参数: 指定一个名字的整形数组
namelen 参数: 指定该数组的长度
oldp: 指向供内核存放该值的缓冲区。 可以是一个空指针
oldlenp: 一个值-结果参数,函数被调用时,oldlenp指向的值指定该缓冲区的大小,函数返回时,该值给出内核存放在该缓冲区中的数据量。不能是空指针
newp: 指向一个大小为newlen参数值的缓冲区,如果不准备指定一个新值,那么newp应为空指针, newlen应为0。

在linux/sysctl.h 中定义了name第一个元素的取值:

  CTL_KERN=1,             /* General kernel info and control */
        CTL_VM=2,               /* VM management */
        CTL_NET=3,              /* Networking */
        CTL_PROC=4,             /* removal breaks strace(1) compilation */
        CTL_FS=5,               /* Filesystems */
        CTL_DEBUG=6,            /* Debugging */
        CTL_DEV=7,              /* Devices */
        CTL_BUS=8,              /* Busses */
        CTL_ABI=9,              /* Binary emulation */
        CTL_CPU=10,             /* CPU stuff (speed scaling, etc) */
        CTL_ARLAN=254,          /* arlan wireless driver */
        CTL_S390DBF=5677,       /* s390 debug */
        CTL_SUNRPC=7249,        /* sunrpc debug */
        CTL_PM=9899,            /* frv power management */
        CTL_FRV=9898,           /* frv specific sysctls */

name的第二个元素可以是以下几种:

  • AF_INET
    获取或设置影响网际协议的变量
  • AF_LINK
    获取或设置链路层信息
  • AF_ROUTE
    返回路由表或接口列表的信息
  • AF_UNSPEC
    获取或设置一些套接字层的变量,如发送/接收缓冲区的大小
文档更新时间: 2021-03-07 21:30   作者:周国强