Rechercher une page de manuel
sysctl
Langue: pl
Version: 1996-04-11 (openSuse - 09/10/07)
Section: 2 (Appels système)
NAZWA
sysctl - odczyt/zapis parametrów systemuSK£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
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)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre