The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

_sysctl (2)
  • >> _sysctl (2) ( Русские man: Системные вызовы )
  • _sysctl (2) ( Linux man: Системные вызовы )
  •  

    НАЗВАНИЕ

    sysctl - читает/записывает параметры системы  

    СИНТАКСИС

    #include <unistd.h>

    #include <linux/unistd.h>

    #include <linux/sysctl.h>

    _syscall1(int, _sysctl, struct __sysctl_args *, args);

    int _sysctl(struct __sysctl_args *args);  

    ОПИСАНИЕ

    Системный вызов _sysctl считывает и/или изменяет параметры ядра. Они могут представлять собой, например, имя машины или максимальное количество открытых файлов. Параметр функции имеет следующую структуру:

    struct __sysctl_args {
            int *name;        /* вектор в виде целого числа, описывающий переменную */
            int nlen;         /* длина этого вектора */
            void *oldval;     /* 0 или адрес, по которому будет помещено старое значение */
            size_t *oldlenp;  /* размер пространства для записи старого значения
                                 переменной */
            void *newval;     /* 0 или адрес нового значения*/
            size_t newlen;    /* размер нового значения */
    };
    

    Этот вызов производит поиск в древовидной структуре, возможно, изменяя при этом структуру каталогов /proc/sys, и, если необходимый элемент найден, вызывает соответствующую процедуру, читающую или изменяющую данное значение.  

    ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ

    #include <linux/unistd.h>
    #include <linux/types.h>
    #include <linux/sysctl.h>
    _syscall1(int, _sysctl, struct __sysctl_args *, args);
    int sysctl(int *name, int nlen, void *oldval, size_t *oldlenp,
               void *newval, size_t newlen)
    {
            struct __sysctl_args args={name,nlen,oldval,oldlenp,newval,newlen};
            return _sysctl(&args);
    }
    #define SIZE(x) sizeof(x)/sizeof(x[0])
    #define OSNAMESZ 100
    char osname[OSNAMESZ];
    int osnamelth;
    int name[] = { CTL_KERN, KERN_OSTYPE };
    main(){
            osnamelth = sizeof(osname);
            if (sysctl(name, SIZE(name), osname, &osnamelth, 0, 0))
                    perror("sysctl");
            else
                    printf("Эта машина работает в %*s\n", osnamelth, osname);
            return 0;
    }
    
     

    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

    При удачном завершении возвращается нулевое значение. При ошибке возвращается -1, а переменной errno присваивается номер ошибки.  

    НАЙДЕННЫЕ ОШИБКИ

    ENOTDIR
    Файл name не найден.
    EPERM
    Нет прав на поиск в одном из встретившихся "каталогов" или нет прав на чтение данных, если oldval не равен нулю; или нет прав на запись, если newval не равен нулю.
    EFAULT
    Был сделан запрос старого значения путем установки "непустого" значения oldval, но установленная длина oldlenp равна нулю.
     

    СООТВЕТСТВИЕ СТАНДАРТАМ

    Эта функция предназначена специально для работы в Linux. Системный вызов sysctl впервые появился в Linux 1.3.57. Он взят из 4.4BSD. Однако, в Linux существует зеркало /proc/sys, и система именования объектов в Linux и BSD 4.4 является различной, но определение функции sysctl(2) аналогично в обеих системах.  

    НАЙДЕННЫЕ ОШИБКИ

    Названия объектов различаются в разных версиях ядра, ПОЭТОМУ ЭТОТ СИСТЕМНЫЙ ВЫЗОВ НЕ ЯВЛЯЕТСЯ ДЕЙСТВЕННЫМ В ПРИЛОЖЕНИЯХ. Вместо этого возможно использование интерфейса /proc/sys.
    Не все существующие объекты описаны соответствующим образом.
    В настоящее време не следует изменять тип операционной системы путем записи в файл /proc/sys/kernel/ostype.  

    СМ. ТАКЖЕ

    proc(5)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    НАЙДЕННЫЕ ОШИБКИ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру