【问题标题】:What are the arguments to sysctl()?sysctl() 的参数是什么?
【发布时间】:2012-02-27 02:15:16
【问题描述】:

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

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

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

【问题讨论】:

  • 试试...man 3 sysctl。或者谷歌...
  • @BrianRoach 我已经用谷歌搜索了它,但找不到任何包含该功能完整描述的链接。 man 3 sysctl 提供了参数,但没有提供它们的实际描述。
  • Linux sysctl(2) man page 描述参数;它还强烈建议不要使用它。我不知道这可能与 MacOS 有多大关系。

标签: c macos unix system


【解决方案1】:

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

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

那么它的参数如下:

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

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

希望我能帮上忙!

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 2018-12-25
    • 1970-01-01
    • 2016-08-15
    • 2016-06-28
    • 2020-06-14
    • 2014-12-30
    • 2021-06-09
    • 2010-09-26
    相关资源
    最近更新 更多