focal (2) sysctl.2.gz

Provided by: manpages-pl-dev_0.7-2_all bug

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/.