.\" 1999 PTM Przemek Borys .\" Last update: A. Krzysztofowicz , Apr 2003, .\" manpages 1.55 .\" .\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Written 11 April 1996 by Andries Brouwer .\" 960412: Added comments from Stephen Tweedie .\" Modified Tue Oct 22 22:28:41 1996 by Eric S. Raymond .\" Modified Mon Jan 5 20:31:04 1998 by aeb. .\" .TH SYSCTL 2 1996-04-11 "Linux 1.3.85" "Podręcznik programisty Linuksa" .SH NAZWA sysctl \- odczyt/zapis parametrów systemu .SH SKŁADNIA .B #include .sp .B #include .sp .B #include .sp .B _syscall1(int, _sysctl, struct __sysctl_args *, args); .sp .BI "int _sysctl(struct __sysctl_args *" args ); .SH OPIS \fI Uwaga! To tłumaczenie może być nieaktualne!\fP .PP Wywołanie .B _sysctl odczytuje i/lub ustawia parametry jądra. Na przykład: nazwę hosta, maksymalną liczbę otwartych plików. Argument wywołania ma postać .PP .nf 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 */ }; .fi .PP Wywołanie to dokonuje przeszukiwania struktury drzewiastej, prawdopodobnie pzypominającej drzewo katalogowe z .BR /proc/sys , i jeśli żądany element zostanie znaleziony, wywołuje odpowiednią funkcję do odczytania lub zmodyfikowania wartości. .SH PRZYKŁAD .nf #include #include #include _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\en", osnamelth, osname); return 0; } .fi .SH "WARTOŚĆ ZWRACANA" Po pomyślnym zakończeniu, .B _sysctl zwraca 0. W przeciwnym wypadku zwracane jest \-1 i ustawiane .I errno w sposób określający rodzaj błędu. .SH BŁĘDY .TP .B ENOTDIR .I name nie zostało znalezione. .TP .B EPERM Brak uprawnień do przeszukiwania jednego z napotkanych `katalogów', lub brak praw odczytu, gdy .I oldval było niezerowe, lub brak praw zapisu, gdy .I newval było niezerowe. .TP .B EFAULT Wywołanie żądało poprzedniej wartości przez ustawienie .I oldval na nie-NULL, lecz zezwalając na zerową wielkość w .IR oldlenp . .SH "ZGODNE Z" Wywołanie to jest to specyficzne dla Linuksa i nie powinno być używane w przenośnych programach. Wywołanie .B sysctl jest obecne w Linuksie od 1.3.57. Pochodzi z 4.4BSD. Jedynie Linux posiada jego odwzorowanie w .I /proc/sys a konwencje nazywania obiektów różnią się między Linuksem i BSD 4.4, lecz deklaracja funkcji .IR sysctl (2) jest taka sama w obu przypadkach. .SH 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 .IR /proc/sys . .br Nie wszystkie dostępne obiekty są odpowiednio udokumentowane. .br Nie jest jeszcze możliwe zmienianie systemu operacyjnego przez zapis do .IR /proc/sys/kernel/ostype . .SH "ZOBACZ TAKŻE" .BR proc (5) .SH "INFORMACJE O TŁUMACZENIU" Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i \fImoże nie być aktualne\fR. 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: .IP man \-\-locale=C 2 sysctl .PP Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages\-pl/.