sysctl

SYSCTL(2)               PodrÄcznik programisty Linuksa               SYSCTL(2)



NAZWA
       sysctl - odczyt/zapis parametrów systemu

SKÅADNIA
       #include <unistd.h>

       #include <linux/unistd.h>

       #include <linux/sysctl.h>

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

       int _sysctl(struct __sysctl_args *args);

OPIS
        Uwaga! To tÅumaczenie może byÄ nieaktualne!

       WywoÅanie _sysctl odczytuje i/lub ustawia parametry jÄdra. Na przykÅad:
       nazwÄ hosta, maksymalnÄ liczbÄ otwartych plików. Argument wywoÅania ma
       postaÄ

       struct __sysctl_args {
               int *name;        /* wektor liczb caÅkowitych opisujÄcy zmiennÄ */
               int nlen;         /* dÅugoÅÄ tego wektora */
               void *oldval;     /* 0 lub adres, gdzie zachowaÄ starÄ wartoÅÄ */
               size_t *oldlenp;  /* iloÅÄ miejsca na starÄ wartoÅÄ
                                    nadpisywana przez rzeczywisty jej rozmiar */
               void *newval;     /* 0 lub adres nowej wartoÅci */
               size_t newlen;    /* rozmiar nowej wartoÅci */
       };

       WywoÅanie to dokonuje przeszukiwania struktury drzewiastej,
       prawdopodobnie pzypominajÄcej drzewo katalogowe z /proc/sys, i jeÅli
       żÄdany element zostanie znaleziony, wywoÅuje odpowiedniÄ funkcjÄ do
       odczytania lub zmodyfikowania wartoÅci.


PRZYKÅAD
       #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("This machine is running %*s\n", osnamelth, osname);
               return 0;
       }


WARTOÅÄ ZWRACANA
       Po pomyÅlnym zakoÅczeniu, _sysctl zwraca 0. W przeciwnym wypadku
       zwracane jest -1 i ustawiane errno w sposób okreÅlajÄcy rodzaj bÅÄdu.

BÅÄDY
       ENOTDIR
              name nie zostaÅo znalezione.

       EPERM  Brak uprawnieÅ do przeszukiwania jednego z napotkanych
              `katalogów', lub brak praw odczytu, gdy oldval byÅo niezerowe,
              lub brak praw zapisu, gdy newval byÅo niezerowe.

       EFAULT WywoÅanie żÄdaÅo poprzedniej wartoÅci przez ustawienie oldval
              na nie-NULL, lecz zezwalajÄc na zerowÄ wielkoÅÄ w oldlenp.

ZGODNE Z
       WywoÅanie to jest to specyficzne dla Linuksa i nie powinno byÄ używane
       w przenoÅnych programach.  WywoÅanie sysctl jest obecne w Linuksie od
       1.3.57. Pochodzi z 4.4BSD. Jedynie Linux posiada jego odwzorowanie w
       /proc/sys a konwencje nazywania obiektów różniÄ siÄ miÄdzy Linuksem
       i BSD 4.4, lecz deklaracja funkcji sysctl(2) jest taka sama w obu
       przypadkach.

USTERKI
       Nazwy obiektów różniÄ siÄ pomiÄdzy wersjami jÄdra.  CZYNI TO
       NINIEJSZÄ FUNKCJÄ SYSTEMOWÄ BEZUÅ»YTECZNÄ DLA APLIKACJI.  Należy
       zamiast niego używaÄ interfejsu /proc/sys.
       Nie wszystkie dostÄpne obiekty sÄ odpowiednio udokumentowane.
       Nie jest jeszcze możliwe zmienianie systemu operacyjnego przez zapis
       do /proc/sys/kernel/ostype.

ZOBACZ TAKŻE
       proc(5)

INFORMACJE O TÅUMACZENIU
       Powyższe tÅumaczenie pochodzi z nieistniejÄcego już Projektu
       TÅumaczenia Manuali i może nie byÄ aktualne. W razie zauważenia
       różnic miÄdzy powyższym opisem a rzeczywistym zachowaniem
       opisywanego programu lub funkcji, prosimy o zapoznanie siÄ z oryginalnÄ
       (angielskÄ) wersjÄ strony podrÄcznika za pomocÄ polecenia:

              man --locale=C 2 sysctl

       Prosimy o pomoc w aktualizacji stron man - wiÄcej informacji można
       znaleÅºÄ pod adresem http://sourceforge.net/projects/manpages-pl/.



Linux 1.3.85                      1996-04-11                         SYSCTL(2)