Rechercher une page de manuel
intro
Langue: pl
Version: 1996-05-22 (fedora - 25/11/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