sysctl()的参数是什么?

时间:2012-02-05 00:47:49

标签: c macos unix system

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

  • C中sysctl()的参数是什么? (我只想要一位将军 描述每个参数是什么以及它用于什么)
  • 在Mac OS X Lion中,sysctl()调用是否仍然有效?

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

1 个答案:

答案 0 :(得分:12)

好吧,引用this page,假设它有原型:

int sysctl (int *name,
            int nlen, 
            void *oldval,
            size_t *oldlenp,
            void *newval, 
            size_t newlen);

然后它的参数如下:

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

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

希望我帮忙!