sysctl()的参数是什么?

fdh*_*fdh 6 c unix macos system

我检查了手册页和文档,但他们只讨论了命令行调用.我在谈论C函数.关于它的两个问题:

  • C中sysctl()的参数是什么?(我只想概括每个参数是什么以及它用于什么)
  • sysctl()调用在Mac OS X Lion中仍然有效吗?

我使用Xcode 3.2.6在Mac OS X Snow Leopard上

Mig*_*uel 13

那么,引用这个页面,假设它有原型:

int sysctl (int *name,
            int nlen, 
            void *oldval,
            size_t *oldlenp,
            void *newval, 
            size_t newlen);
Run Code Online (Sandbox Code Playgroud)

然后它的参数如下:

  • name - >指向整数数组:每个整数值标识一个sysctl项,即目录或叶节点文件.这些值的符号名称在中定义<linux/sysctl.h>.
  • nlen - >表示数组名称中列出了多少个整数:要达到指定通过子目录的路径所需的特定条目,因此需要告诉这条路径有多长.
  • oldval - >是指向数据缓冲区的指针,其中必须存储sysctl项的旧值.如果为NULL,则系统调用不会将值返回给用户空间.
  • oldlenp - >指向一个整数,表示oldval缓冲区的长度.系统调用会更改该值以反映已写入的数据量,该值可能小于缓冲区长度.
  • newval - >指向托管替换数据的数据缓冲区:内核将读取此缓冲区以更改正在执行的sysctl条目.如果为NULL,则不更改内核值.
  • newlen - >是newval的长度.内核将只读取newval中的newlen字节.

我建议您阅读整个页面,因为它提供了更多详细信息.至于它在Mac OS X Lion中有效,我不确定,但我想.

希望我帮忙!