2012-02-05 23 views
5

Tôi đã kiểm tra các trang và tài liệu hướng dẫn sử dụng nhưng chúng chỉ thảo luận về lệnh gọi dòng lệnh. Tôi đang nói về hàm C. Hai câu hỏi về nó:Các đối số cho sysctl() là gì?

  • Các đối số cho sysctl() trong C là gì? (Tôi chỉ muốn có một mô tả chung về những gì mỗi đối số là gì và nó được sử dụng cho)
  • Là sysctl() gọi vẫn có giá trị trong Mac OS X Lion?

tôi trên Mac OS X Snow Leopard sử dụng Xcode 3.2.6

+1

Hãy thử ... 'man 3 sysctl'. Hoặc google ... –

+1

@BrianRoach Tôi đã googled nó nhưng không thể tìm thấy bất kỳ liên kết với mô tả đầy đủ về chức năng. người đàn ông 3 sysctl cung cấp các đối số nhưng không phải là một mô tả thực tế của họ. – fdh

+0

Trang [sysctl (2) người đàn ông Linux] (http://linux.die.net/man/2/sysctl) mô tả các tham số; nó cũng khuyến khích * không * sử dụng nó. Tôi không biết mức độ liên quan của MacOS. –

Trả lời

10

Vâng, trích dẫn this page, giả sử nó có nguyên mẫu:

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

thì đó là các thông số sẽ như sau:

  • tên -> trỏ đến một mảng số nguyên: mỗi giá trị số nguyên xác định mục sysctl, một thư mục hoặc một tệp nút lá. Tên biểu tượng cho các giá trị như vậy được xác định trong <linux/sysctl.h>.
  • nlen -> nêu số lượng số nguyên được liệt kê trong tên mảng: để đạt được mục nhập cụ thể, bạn cần chỉ định đường dẫn qua các thư mục con, vì vậy bạn cần biết đường dẫn đó dài bao lâu.
  • oldval -> là một con trỏ đến một bộ đệm dữ liệu trong đó giá trị cũ của mục sysctl phải được lưu trữ. Nếu nó là NULL, cuộc gọi hệ thống sẽ không trả về giá trị cho không gian người dùng.
  • oldlenp -> trỏ đến một số nguyên nêu độ dài của bộ đệm oldval. Cuộc gọi hệ thống thay đổi giá trị để phản ánh số lượng dữ liệu đã được ghi, có thể nhỏ hơn độ dài bộ đệm.
  • newval -> trỏ tới bộ đệm dữ liệu lưu trữ dữ liệu thay thế: hạt nhân sẽ đọc bộ đệm này để thay đổi mục nhập sysctl đang được thực hiện. Nếu nó là NULL, giá trị hạt nhân không thay đổi.
  • newlen -> là chiều dài của newval. Hạt nhân sẽ đọc không quá byte newlen từ newval.

Tôi khuyên bạn nên đọc toàn bộ số page vì nó cung cấp chi tiết mở rộng hơn. Và đối với nó là hợp lệ trong Mac OS X Lion, tôi không chắc chắn, nhưng tôi sẽ tưởng tượng.

Hope tôi đã giúp!

+0

Tuyệt vời, cảm ơn. – fdh

Các vấn đề liên quan