2012-02-05 129 views
5

我檢查了手冊頁和文檔,但他們只討論命令行調用。我正在談論C函數。關於它的兩個問題:什麼是sysctl()的參數?

  • 什麼是C中的sysctl()的參數? (我只想要一個通用的 說明每個參數是什麼以及它用於什麼)
  • sysctl()調用在Mac OS X Lion中仍然有效嗎?

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

+1

試試......'man 3 sysctl'。或谷歌... – 2012-02-05 00:53:48

+1

@BrianRoach我已經GOOGLE了它,但無法找到任何完整的功能描述的鏈接。 man 3 sysctl提供了參數,但不是它們的實際描述。 – fdh 2012-02-05 00:56:29

+0

[Linux sysctl(2)手冊頁](http://linux.die.net/man/2/sysctl)描述了這些參數;它也強烈建議*不要*使用它。我不知道這可能與MacOS有多相關。 – 2012-02-05 02:21:21

回答

10

好,報價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中是否有效,我不確定,但我想象。

希望我幫了忙!

+0

太棒了,謝謝。 – fdh 2012-02-05 01:04:55