2012-02-05 24 views
5

Revisé las páginas man y la documentación, pero solo hablan de la llamada de línea de comando. Estoy hablando de la función C. Dos preguntas al respecto:¿Cuáles son los argumentos para sysctl()?

  • ¿Cuáles son los argumentos para sysctl() en C? (Solo quiero una descripción general de de cada argumento y para qué se utiliza)
  • ¿La llamada a sysctl() sigue siendo válida en Mac OS X Lion?

estoy en Mac OS X Snow Leopard usando Xcode 3.2.6

+1

Prueba ... 'man 3 sysctl'. O google ... –

+1

@BrianRoach Ya lo busqué en Google pero no pude encontrar ningún enlace con descripciones completas de la función. man 3 sysctl proporciona los argumentos pero no una descripción real de ellos. – fdh

+0

La página de comando [Linux sysctl (2)] (http://linux.die.net/man/2/sysctl) describe los parámetros; también recomienda encarecidamente * no * usarlo. No sé qué tan relevante podría ser para MacOS. –

Respuesta

10

Bueno, citando this page, suponiendo que tiene el prototipo:

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

entonces es parámetros serían los siguientes:

  • name -> apunta a una matriz de enteros: cada uno de los valores enteros identifica una elemento sysctl, ya sea un directorio o un archivo de nodo hoja. Los nombres simbólicos para tales valores se definen en <linux/sysctl.h>.
  • nlen -> indica cuántos números enteros se enumeran en el nombre de la matriz: para llegar a una entrada en particular, debe especificar la ruta a través de los subdirectorios, por lo que debe indicar cuánto tiempo dura dicha ruta.
  • oldval -> es un puntero a un búfer de datos donde debe almacenarse el valor anterior del elemento sysctl. Si es NULL, la llamada al sistema no devolverá valores al espacio del usuario.
  • oldlenp -> apunta a un número entero que indica la longitud del búfer oldval. La llamada al sistema cambia el valor para reflejar la cantidad de datos que se han escrito, que puede ser menor que la longitud del búfer.
  • newval -> apunta a un búfer de datos que aloja los datos de reemplazo: el kernel leerá este búfer para cambiar la entrada sysctl a la que se actúa. Si es NULL, el valor del kernel no cambia.
  • newlen -> es la longitud de newval. El kernel no leerá más que newlen bytes de newval.

Le recomiendo que lea todo page, ya que proporciona más detalles. Y en cuanto a que sea válido en Mac OS X Lion, no estoy seguro, pero me lo imagino.

Espero que haya ayudado!

+0

Impresionante, gracias. – fdh

Cuestiones relacionadas