Rechercher une page de manuel
intro
Langue: pl
Version: 1996-05-22 (openSuse - 09/10/07)
Section: 2 (Appels système)
Sommaire
NAZWA
intro - wprowadzenie do wywo³añ systemowychOPIS
Ten dzia³ opisuje wywo³ania systemowe Linuksa. Listê wszystkich 164 wywo³añ systemowych obecnych w j±drze 2.0 Linuksa mo¿na znale¼æ w syscalls(2).Wywo³ywanie bezpo¶rednie
W wiêkszo¶ci przypadków nie jest konieczne wywo³ywanie wywo³añ systemowych bezpo¶rednio, ale czasem zdarza siê, ¿e jakie¶ przydatna funkcja systemowa nie jest zaimplementowana w standardowej bibliotece C.Sk³adnia
#include <linux/unistd.h>Makro _syscall
¿±dane wywo³anie systemowe
Konfiguracja
Wa¿n± rzecz±, któr± nale¿y wiedzieæ o wywo³aniu systemowym jest jego prototyp. Trzeba wiedzieæ ile posiada ono argumentów, jakie s± ich typy i jaki typ zwraca. Istnieje sze¶æ makrodefinicji u³atwiaj±cych bezpo¶rednie wywo³ania systemu. Ich sk³adnia jest nastêpuj±ca:- _syscallX(type,name,type1,arg1,type2,arg2,...)
-
-
- gdzie X jest z zakresu 0-5 i oznacza liczbê argumentów wymaganych przez wywo³anie systemowe
- type jest zwracanym typem
- name jest nazw± wywo³ania systemowego
- typeN jest typem N-tego argumentu
- argN jest nazw± N-tego argumentu
-
- Te makrodefinicje tworz± funkcjê o nazwie name z podanymi argumentami. Po zawarciu _syscall() w pliku ¼ród³owym, mo¿na wywo³ywaæ wywo³anie systemowe poprzez name.
PRZYK£AD
#include <stdio.h> #include <linux/unistd.h> /* dla makra _syscallX */ #include <linux/kernel.h> /* dla struktury sysinfo*/ _syscall1(int, sysinfo, struct sysinfo *, info); /* Uwaga: je¶li kopiowanie odbywa siê bezpo¶rednio ze ¼ród³a nroff, nale¿y pamiêtaæ, aby usun±æ dodatkowe znaki `' z printf */ int main(void) { struct sysinfo s_info; int error; error = sysinfo(&s_info); printf("code error = %d\n", error); printf("Uptime = %ds\nLoad: 1 min %d / 5 min %d / 15 min %d\n" "RAM: total %d / free %d / shared %d\n" "Memory in buffers = %d\nSwap: total %d / free %d\n" "Number of processes = %d\n", s_info.uptime, s_info.loads[0], s_info.loads[1], s_info.loads[2], s_info.totalram, s_info.freeram, s_info.sharedram, s_info.bufferram, s_info.totalswap, s_info.freeswap, s_info.procs); return(0); }
Przyk³adowe wyj¶cie
code error = 0 uptime = 502034s Load: 1 min 13376 / 5 min 5504 / 15 min 1152 RAM: total 15343616 / free 827392 / shared 8237056 Memory in buffers = 5066752 Swap: total 27881472 / free 24698880 Number of processes = 40
UWAGI
Makra _syscall() NIE tworz± prototypu. Mo¿e istnieæ potrzega stworzenia go samodzielnie, szczególnie w przypadku korzystania z C++.Wywo³ania systemowe nie musz± koniecznie zwracaæ jedynie dodatnich lub ujemnych kodów b³êdu. Trzeba przeczytaæ ¼ród³o, aby upewniæ siê, jak zwracaj± one b³êdy. Zazwyczaj jest to standardowy kod b³êdu ze znakiem ujemnym, np. -EPERM. Makra _syscall() zwracaj± wynik r wywo³ania systemowego je¶li r jest nieujemne, ale zwracaj± -1 i zmieniaj± warto¶æ errno na -r je¶li r jest ujemne. Kody b³êdów mo¿na znale¼æ w errno(3).
Niektóre wywo³ania systemowe, takie jak mmap, wymagaj± wiêcej ni¿ piêciu argumentów. Jest to osi±gane poprzez umieszczanie argumentów na stosie i przekazywanie wska¼nika do bloku argumentów.
Podczas definiowania wywo³ania systemowego, typy argumentów MUSZ¡ zostaæ przekazane przez warto¶æ lub przez wska¼nik (dla aregatów takich jak struktury).
ZGODNE Z
W tym rozdziale wystêpuj± odwo³ania do ró¿nych wersji Uniksa i standardów realizowane poprzez skróty. S± to:- SVr4
- System V Release 4 Unix, opisane w "Programmer's Reference Manual: Operating System API (Intel processors)" (Prentice-Hall 1992, ISBN 0-13-951294-2)
- SVID
- System V Interface Definition, opisane w "The System V Interface Definition, Fourth Edition".
- POSIX.1
- IEEE 1003.1-1990 part 1, aka ISO/IEC 9945-1:1990s, inaczej "IEEE Portable Operating System Interface for Computing Environments", wyja¶nione w "POSIX Programmer's Guide" Donalda Lewine'a (O'Reilly & Associates, Inc., 1991, ISBN 0-937175-73-0.
- POSIX.1b
- IEEE Std 1003.1b-1993 (POSIX.1b standard) opisuj±cy mechanizmy czasu rzeczywistego w przeno¶nych systemach operacyjnych, inaczej ISO/IEC 9945-1:1996, wyja¶nione w "Programming for the real world - POSIX.4" autorstwa Billa O. Gallmeistera (O'Reilly & Associates, Inc. ISBN 1-56592-074-0).
- SUS, SUSv2
- Single Unix Specification. (Rozwijane przez X/Open i The Open Group. Zobacz tak¿e http://www.UNIX-systems.org/version2/ .)
- 4.3BSD/4.4BSD
- Dystrybucje 4.3 i 4.4 systemu Berkeley Unix. 4.4BSD jest zgodny w górê w stosunku do 4.3.
- V7
- Version 7, potomek systemów Unix z Bell Labs.
PLIKI
/usr/include/linux/unistd.hZOBACZ TAK¯E
errno(3)AUTORZY
Nazwiska autorów i warunki kopiowania znajdziesz w nag³ówku strony man. Mog± byæ one odmienne w zale¿no¶ci od strony.W t³umaczeniu stron podrêcznika man z pakietu man-pages, nale¿±cych do sekcji 2, w ramach Projektu T³umaczenia Manuali <http://ptm.linux.pl> brali udzia³ (kolejno¶æ alfabetyczna):
- Przemek Borys <pborys@dione.ids.pl>
- Adam Byrtek <alpha@irc.pl>
- Andrzej Krzysztofowicz <ankry@mif.pg.gda.pl>
- Rafa³ Lewczuk <R.Lewczuk@elka.pw.edu.pl>
- Robert Luberda <robert@debian.org>
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre