diff -ur man-pages-cs-0.18.20090209-orig/man-pages/man2/sigaction.2 man-pages-cs-0.18.20090209/man-pages/man2/sigaction.2 --- man-pages-cs-0.18.20090209-orig/man-pages/man2/sigaction.2 1999-05-31 19:28:28.000000000 +0200 +++ man-pages-cs-0.18.20090209/man-pages/man2/sigaction.2 2009-11-13 12:46:19.000000000 +0100 @@ -1,10 +1,10 @@ -.TH SIGACTION 2 "18.února 1997" "Linux 1.3" "Linux - příručka programátora" +.\" Aktualizováno podle man-pages-3.09-2 z distribuce Fedora 10 +.TH SIGACTION 2 "29.října 2009" "Linux 1.3" "Linux - příručka programátora" .do hla cs .do hpf hyphen.cs .SH JMÉNO -sigaction, sigprocmask, sigpending, sigsuspend \- Funkce POSIXu -pro práci se signály. +sigaction \- prověří a změní akci signálu .SH SYNTAXE .B #include @@ -12,12 +12,11 @@ .BI "int sigaction(int " signum ", const struct sigaction *" act "," .BI "struct sigaction *" oldact ); .sp -.BI "int sigprocmask(int " how ", const sigset_t *" set ", " -.BI "sigset_t *" oldset ); -.sp -.BI "int sigpending(sigset_t *" set ); +Vyžaduje Feature Test Makro pro glibc (viz \fBfeature_test_macros\fP(7)): +.fi .sp -.BI "int sigsuspend(const sigset_t *" mask ); +.br +\fBsigaction\fP(): _POSIX_C_SOURCE>=1 || _XOPEN_SOURCE || _POSIX_SOURCE .SH POPIS Systémovým voláním @@ -35,7 +34,7 @@ .I act nenulová, je pro signál .I signum -nainstalována akce +nainstalovaná akce .IR act. Je-li hodnota .I oldact @@ -57,6 +56,17 @@ .fi .RE .PP +Na některých architekturách je zahrnuto sjednocení: nepřiřazujte do +.I sa_handler +a +.I sa_sigaction. +.sp +Prvek +.I sa_restorer +je zastaralý a neměl by být používán. Norma POSIX +nespecifikuje prvek +.I sa_restorer. +.sp .I sa_handler určuje akci, která má být přiřazena signálu .I signum @@ -65,14 +75,29 @@ pro implicitní akci, .B SIG_IGN pro ignorování signálu, nebo ukazatel na funkci ošetřující signál. +Tato funkce má ošetřující funkci jako jediný parametr. +.sp +Pokud je v +.I sa_flags +specifikováno +.B SA_SIGINFO, +pak je obslužná funkce pro \fIsignum\fP specifikována v +.I sa_sigaction +a ne v +.I sa_handler. +Tato funkce obdrží číslo signálu jako první parametr, +ukazatel na +.I siginfo_t +jako druhý parametr a ukazatel na +.I ucontext_t +jako poslední třetí parametr. +.I sa .PP .I sa_mask je maska signálů, které mají být zablokovány při obsluze signálu. Navíc je zablokován signál, který vyvolal akci, nejsou\-li nastaveny příznaky -.B SA_NODEFER -nebo -.B SA_NOMASK . +.B SA_NODEFER . .PP .I sa_flags je množina příznaků, které ovlivňují obsluhu signálu. @@ -87,121 +112,323 @@ tento proces signál .BR SIGSTOP ", " SIGTSTP ", " SIGTTIN nebo -.BR SIGTTOU ")." +.BR SIGTTOU ")" +nebo při ukončení (tj. při obdržení +.BR SIGCONT ")" +(viz \fBwait\fP(2)). Toto nastavení má smysl pouze +při zřízení obslužné funkce pro +.B SIGCHLD. +.TP +.BR SA_NOCLDWAIT " (Od Linuxu 2.6) +Je-li \fIsignum\fP rovno \fSIGCHLD\fP, nejsou z potomci procesu +poté co skončí transformovány na zombie. Další informace také \fBwaitpid\fP(2). +Tento příznak má smysl pouze když je nastavena obslužná funkce pro +.B SIGCHLD +nebo je nastaveno +.B SIG_DFL. +.sp +Je-li příznak \fBSA_NOCLDWAIT\fP nastaven během zřizování obslužné funkce +pro +.B SIGCHLD, +pak norma POSIX.1 nespecifikuje zda je signál +.B SIGCHLD +generován při ukončení potomka procesu. Na Linuxu je +signál +.B SIGCHLD +v takovémto případě generován. V některých jiných implementacích +však signál generován není. +.TP +.BR SA_NODEFER +Umožní příchod dalšího signálu během jeho vlastní obslužné funkce. +Má smysl pouze pokud je nastavena obslužná funkce. +.B SA_NOMASK +je zastaralé a nestandardní synonymum. +.TP +.BR SA_ONSTACK +Zavolá obslužnou funkci na alternativním signálovém zásobníku +poskytnutého prostřednictvím \fBsigaltstack\fP(2). Pokud není +alternativní zásobník dostupný, bude použit implicitní z +zásobník. Toto nastavení je smysluplné pouze v případě, že +je nastavena obslužná funkce. .TP -.BR SA_ONESHOT " nebo " SA_RESETHAND +.BR SA_RESETHAND Poté, co je zavolána obslužná funkce, se obsluha signálu vrací do -implicitního stavu. (Takto se normálně chová systémové volání -.BR signal "(2) .)" +implicitního stavu. Toto nastavení je smysluplné pouze v případě, že +je nastavena obslužná funkce. +.B SA_ONESHOT +je zastaralé a nestandardní synonymum. .TP .B SA_RESTART Nastaví kompatibilní chování s BSD: určitá systémová volání pak -jsou po zpracování signálu restartována. +jsou po zpracování signálu restartována. Toto nastavení je +smysluplné pouze v případě, že je nastavena obslužná funkce. +Pro více informací o restartu systémového volání se obraťte na +\fBsignal\fP(7). .TP -.BR SA_NOMASK " neboli " SA_NODEFER -Umožní příchod dalšího signálu během jeho vlastní obslužné funkce. +.B SA_SIGINFO "(Od Linuxu 2.2) +Obslužná funkce má tři parametry, ne jeden. V tomto případě +.I sa_sigaction +by mělo být nastaveno místo +.I sa_handler. +Toto nastavení je +smysluplné pouze v případě, že je nastavena obslužná funkce. .RE .PP -Pole -.I sa_restorer -je neaktuální a nemělo by být používáno. +Parametr \fIsiginfo_t\fP pro \fIsa_sigaction\fP je struktura s následujícími +prvky: .PP -Systémovým voláním -.B sigprocmask -lze měnit seznam momentálně blokovaných signálů. Záleží na parametru -.IR how , -jaká změna nastane: -.RS -.TP -.B SIG_BLOCK -Nový seznam blokovaných signálů bude obsahovat dosud blokované signály -a signály v parametru -.I set . -.TP -.B SIG_UNBLOCK -Signály v parametru -.I set -jsou odstraněny ze seznamu blokovaných signálů. -Je přípustné uvést v parametru -.I set -signál, který není blokován. -.TP -.B SIG_SETMASK -Seznam blokovaných signálů je nastaven na -.IR set . -.RE -.PP -Je\-li hodnota parametru -.I oldset -nenulová, je předchozí seznam blokovaných signálů uložen do -.IR oldset . -.PP -Systémové volání -.B sigpending -dovoluje zjistit nevyřízené signály (které přišly při zablokování). -Maska nevyřízených signálů je uložena do parametru -.IR set . -.PP -Volání -.B sigsuspend -přechodně nahradí masku signálů maskou zadanou v parametru -.I mask -a poté pozdrží provádění procesu do obdržení signálu. - -.SH "NÁVRATOVÉ HODNOTY" -Funkce -.BR sigaction , -.BR sigprocmask , -.B sigpending -a -.B sigsuspend -vrací 0 při úspěšném provedení a -1 při chybě. - -.SH "CHYBOVÉ HODNOTY" +.sp +.RS +.nf +siginfo_t { + int si_signo; /*číslo signálu*/ + int si_errno; /*hodnota errno*/ + int si_code; /*kód signálu*/ + int si_trapno; /*číslo, které zapříčinilo hard- + warově generovaný signál (nepo- + užito na většině architektur)*/ + pid_t si_pid; /*ID odesílajícího procesu*/ + uid_t si_uid; /*skutečné ID vlastníka*/ + int si_status; /*návratová hodnota signálu*/ + clock_t si_utime; /*spotřeba uživatelského času*/ + clock_t si_stime; /*spotřeba systémového času*/ + sigval_t si_value; /*hodnota signálu*/ + int si_int; /*POSIX.1b signál*/ + void *si_ptr; /*POSIX.1b signál*/ + int si_overrun; /*počítadlo časovače*/ + int si_timerid; /*ID časovače POSIX.1b*/ + void *si_addr; /*paměťová lokace, která + způsobila chybu*/ + int si_band; /*band event*/ + int si_fd; /*identifikátor souboru*/ +} +.fi +.RE +.PP +.RE +.PP +Proměnné \fIsi_signo\fP, \fIsi_errno\fP a \fIsi_code\fP jsou +definována pro všechny signály. (\fIsi_errno\fP se na Linuxu +většinou nepoužívá) Zbytek struktury může být union, takže +by měla být čtena pouze pole, která mají význam pro daný signál: +.sp +* POSIX.1b signály a \fBSIGCHLD\fP nastavují \fIsi_pid\fP a \fIsi_uid\fP. +.sp +* POSIX.1b časovače (od Linux verze 2.6) nastavují \fIsi_overrun\fP + a \fIsi_timerid\fP. Pole \fIsi_timerid\fP je interní ID použité + kernelem pro identifikaci časovače. Není to stejné číslo + jako ID vracené funkcí \fBtimer_create\fP(2). +.sp +* \fBSIGCHLD\fP použije \fIsi_status\fP, \fIsi_utime\fP a \fIsi_stime\fP. +.sp +* Proměnné \fIsi_int\fP a \fIsi_ptr\fP jsou specifikována odesilatelem + POSIX.1b signálu. Více detailů lze nalézt v \fBsigqueue\fP(2). +.sp +* \fBSIGILL, SIGFPE, SIGSEGV\fP a \fBSIGBUS\fP používají \fIsi_addr\fP kam + vloží adresu chyby. \fBSIGPOLL\fP používá \fIsi_band\fP a \fIsi_fd\fP. +.sp +.I si_code +je hodnota (ne bitová maska) indikující který signál byl zaslán. Následující +seznam ukazuje hodnoty, které mohou být umístěny v poli \fIsi_code\fP společně +s důvodem, proč byl signál generován. +.RS .TP -.B EINVAL -Byl zadán neplatný signál. Tato chyba je také generována při pokusu -změnit obsluhu signálů -.BR SIGKILL " nebo " SIGSTOP ", " -které nemohou být zachyceny. +\fBSI_USER\fP \fBkill\fP(2) nebo \fBraise\fP(3) .TP -.B EFAULT -.IR act ", " oldact ", " set -nebo -.I oldset -ukazují do oblasti paměti, která nepatří do adresního prostoru procesu. +\fBSI_KERNEL\fP Signály zaslané kernelem. .TP -.B EINTR -Systémové volání bylo přerušeno. - -.SH POZNÁMKY -Signály -.BR SIGKILL " or " SIGSTOP -nelze blokovat voláním -sigprocmask. Pokusy o to budou v tichosti ignorovány. -.PP -Podle normy POSIX není definováno chování procesu poté, co -ignoruje signál SIGFPE, SIGILL, nebo SIGSEGV, který nebyl generován -funkcemi \fIkill()\fP nebo \fIraise()\fP. -Celočíselné dělení nulou dává nedefinovaný výsledek a -na některých architekturách generuje signál SIGFPE. -Ignorování tohoto signálu může způsobit zacyklení procesu. +\fBSI_QUEUE\fP \fBsigqueue\fP(2) +.TP +\fBSI_TIMER\fP vypršel POSIXový časovač +.TP +\fBSI_MESGQ\fP změnil se stav POSIXové fronty zpráv + (Od Linuxu 2.6.6). Viz. \fBmq_notify\fP(3) +.TP +\fBSI_ASINCIO\fP Dokončeno AIO. +.TP +\fBSI_SIGIO\fP SIGIO zařazeno do fronty +.TP +\fBSI_TKILL\fP \fBtkill\fP(2) nebo \fBtgkill\fP(2) (od Linuxu 2.4.19) .PP -Nastavení akce pro signál -.B SIGCHLD -na -.B SIG_IGN -způsobí automatický zánik dětských procesů po jejich ukončení. +.RE .PP -Norma POSIX definuje pouze příznak -.BR SA_NOCLDSTOP . -Používání jiných příznaků v -.I sa_flags -je nepřenositelné. +Následující hodnoty mohou být umístěny v +.I si_code +pro signál \fBSIGILL\fP: +.RS +.TP +\fBILL_ILLOPC\fP nesprávný opcode +.TP +\fBILL_ILLOPN\fP nesprávný operand +.TP +\fBILL_ILLADR\fP nesprávný adresovací mód +.TP +\fBILL_ILLTRP\fP illegal trap +.TP +\fBILL_PRVOPC\fP privilegovaný opcode +.TP +\fBILL_PRVREG\fP privilegovaný registr +.TP +\fBILL_COPROC\fP chyba koprocesoru +.TP +\fBILL_BADSTK\fP chyba interního zásobníku .PP +.RE +.PP +Následující hodnoty mohou být umístěny v +.I si_code +pro signál \fBSIGFPE\fP: +.RS +.TP +\fBFPE_INTDIV\fP integer dělný nulou +.TP +\fBFPE_INTOVF\fP přetečení integeru +.TP +\fBFPE_FLTDIV\fP float číslo dělené nulou +.TP +\fBFPE_FLTOVF\fP přetečení čísla typu float +.TP +\fBFPE_FLTUND\fP podtečení čísla typu float +.TP +\fBFPE_FLTRES\fP nepřesný výsledek typu float +.TP +\fBFPE_FLTINV\fP neplatná operace s čísly typu float +.TP +\fBFPE_FLTSUB\fP index mimo rozsah +.PP +.RE +.PP +Následující hodnoty mohou být umístěny v +.I si_code +pro signál \fBSIGSEGV\fP: +.RS +.TP +\fBSEGV_MAPERR\fP adresa není namapována na objekt +.TP +\fBSEGV_ACCERR\fP neplatná práva namapovaného objektu +.PP +.RE +.PP +Následující hodnoty mohou být umístěny v +.I si_code +pro signál \fBSIGBUS\fP: +.RS +.TP +\fBBUS_ADRALN\fP špatné zarovnání adresy +.TP +\fBBUS_ADDERR\fP fyzická adresa neexistuje +.TP +\fBBUS_OBJERR\fP objektově specifická hardwarová chyba +.PP +.RE +.PP +Následující hodnoty mohou být umístěny v +.I si_code +pro signál \fBSIGTRAP\fP: +.RS +.TP +\fBTRAP_BRKPT\fP breakpoint procesu +.TP +\fBTRAP_TRACE\fP proces trace trap +.PP +.RE +.PP +Následující hodnoty mohou být umístěny v +.I si_code +pro signál \fBSIGCHLD\fP: +.RS +.TP +\fBCLD_EXITED\fP potomek procesu skončil +.TP +\fBCLD_KILLED\fP potomek procesu byl zabit +.TP +\fBCLD_DUMPED\fP abnormální ukončení potomka procesu +.TP +\fBCLD_TRAPPED\fP traced child was trapped +.TP +\fBCLD_STOPPED\fP pozastavení potomka procesu +.TP +\fBCLD_CONTINUED\fP pozastavený potomek pokračuje (od Linuxu + verze 2.6.9) +.PP +.RE +.PP +Následující hodnoty mohou být umístěny v +.I si_code +pro signál \fBSIGPOLL\fP: +.RS +.TP +\fBPOLL_INN\fP k dispozici data na vstupu +.TP +\fBPOLL_OUT\fP výstupní buffery k dispozici +.TP +\fBPOLL_MSG\fP dostupná příchozí zpráva +.TP +\fBPOLL_ERR\fP V/V chyba +.TP +\fBPOLL_PRI\fP prioritní vstup k dispozici +.TP +\fBPOLL_HUP\fP zařízení odpojeno +.SH NÁVRATOVÁ HODNOTA +\fBsigaction\fP() vrací 0 při úspěchu a -1 při chybě. +.SH CHYBY +.TP +.B EFAULT +\fIact\fP nebo \fIoldact\fP ukazují do paměti, která není platnou +součástí adresového prostoru procesu. +.sp +.TP +.B EINVAL +Byl specifikován neplatný signál. Tato chyba bude generována +i v případě, že bude proveden pokus o změnu akce na příkaz +.B SIGKILL +nebo +.B SIGSTOP. +Tyto signály nemohou být zachyceny nebo ignorovány. +.SH SPLŇUJE STANDARDY +POSIX.1-2004, SVr4. +.SH POZNÁMKY +Podle normy POSIX je chování procesu nedefinované pokud ignoruje +.B SIGFPE, SIGILL +nebo +.B SIGSEGV +signály, které nebyly generované pomocí \fBkill\fP(2) nebo +\fBraise\fP(3). Dělení nulou v pevné řádové čárce (integer) +má nedefinovaný výsledek. Tato operace může na některých +architekturách generovat +.B SIGFPE +signál. (Také dělení nejmenšího záporného čísla -1 může generovat +.B SIGFPE. +) Ignorování tohoto signálu může skončit nekonečnou smyčkou. +.sp +POSIX.1-1990 neumožňovalo nastavení +.B SIGCHLD +na hodnotu +.B SIG_IGN. +POSIX.1-2001 toto nastavení umožňuje, takže ignorování +.B SIGCHLD +může být použito pro zamezení vytváření zombies (viz +\fBwait\fP(2)). Nicméně starší BSD a System V aplikace +se v chování na příkaz +.B SIGCHLD +liší a tak stále jediným přenositelným řešením, že se +potomek nestane zombie, je odchytávání signálu +.B SIGCHLD +pomocí \fBwait\fP(2) nebo jiné podobné funkce. +.sp +Norma POSIX.1-1990 specifikovala pouze +.B SA_NOCLDSTOP. +Norma POSIX.1-2001 přidala +.B SA_NOCLDWAIT, SA_RESETHAND, SA_NODEFER +a +.B SA_SIGINFO. +Použití těchto hodnot v \fIsa_flags\fP může být hůře +přenositelné na starší linuxové distribuce. +.sp Příznak .B SA_RESETHAND je kompatibilní se stejnojmenným příznakem v systémech SVr4. +.sp .PP Příznak .B SA_NODEFER @@ -211,33 +438,46 @@ (což způsobovalo ignorování nastavení .I sa_mask ). -.PP -Jména -.BR SA_RESETHAND " and " SA_NODEFER -jsou určena pro kompatibilitu se SVr4 a byla zavedena ve verzi knihovny libc -3.0.9. -.PP -Pro zjištění momentálního stavu obsluhy signálů lze volat funkci -.B sigaction -s parametrem -.IR act -rovným nule. -Zadáte\-li nulové parametry -.IR act +.sp +Pokud je funkce \fBsigaction\fP() volána s druhým argumentem rovným +null, může být zjištěna aktuální obslužná funkce. Může být také zjištěno +zda je daný signál podporován na na daném stroji pokud zavoláme tuto +funkci s druhým a třetím argumentem rovným null. +.sp +Signály +.B SIGKILL a -.IR oldact "," -lze ji použít ke kontrole, je\-li daný signál na tom kterém systému -použitelný. -.PP -Pro podrobnosti o manipulaci se skupinami signálů viz -.BR sigsetops (3) -.SH "SPLŇUJE STANDARDY" -POSIX, SVr4. -Dokumentace SVr4 se nezmiňuje o chybové hodnotě EINTR. - +.B SIGSTOP +nemohou být blokovány (specifikováním v \fIsa_mask\fP). +Takovéto pokusy budou ignorovány bez vypsání chyby. +.sp +Pro více informací o manipulaci s množinami signálů se obraťte na +\fBsigsetopts\fP(3). +.sp +Pro seznam asynchronních signálově bezpečných funkcí, které mohou +být bezpečně volány zevnitř obslužné funkce použijte \fBsignal\fP(7). +.sp +.B Nezdokumentované +.br +Před uvedením +.B SA_SIGINFO +bylo možné získat dodatečné informace pomocí funkce \fIsa_handler\fP +s druhým parametrem typu \fIstruct sigcontext\fP. Pro více informací se +obraťte na relevantní kernelové zdroje. Tato funkce je nyní již zastaralá. +.SH CHYBY +V kenelech do verze 2.6.13 včetně, specifikace +.B SA_NODEFER +v \fIsa_flags\fP zabránila nejenom vymaskování signálu během provádění +obslužné funkce, ale měla také účinek na signály specifikované v +\fIsa_mask\fP. Tato chyba byla odstraněna v kernelu 2.6.14. +.SH PŘÍKLAD +Viz \fBmprotect\fP(2). .SH "DALŠÍ INFORMACE" -.BR kill "(1), " kill "(2), " killpg "(2), " pause "(2), " raise "(3), " -.BR siginterrupt "(3), " signal "(2), " signal "(7), " sigsetops "(3), " -.BR sigvec (2) -.SH VAROVÁNÍ -Překlad je pravděpodobně zastaralý. Pokud chcete pomoci s jeho aktualizací, zamiřte na http://man-pages-cs-wiki.homelinux.net/ +.BR kill "(1), " kill "(2), " killpg "(2), " pause "(2), " sigaltstack "(2), " +.BR signal "(2), " signalfd "(2), " sigpending "(2), " sigprocmask "(2), " +.BR sigqueue "(2), " sigsuspend "(2), " wait "(2), " raise "(3), " siginterupt "(3) , " +.BR sigsetopts "(3), " sigvec "(3), " core "(5), " signal "(7) +.SH TIRÁŽ +Tato stránka je součástí projektu Linux \fIman\-pages\fP. Popis projektu a +informace o hlášení chyb najdete na http://www.kernel.org/doc/man\-pages/. + diff -ur man-pages-cs-0.18.20090209-orig/man-pages/man2/socket.2 man-pages-cs-0.18.20090209/man-pages/man2/socket.2 --- man-pages-cs-0.18.20090209-orig/man-pages/man2/socket.2 1999-05-31 19:28:29.000000000 +0200 +++ man-pages-cs-0.18.20090209/man-pages/man2/socket.2 2009-11-13 12:48:12.000000000 +0100 @@ -1,10 +1,11 @@ -.TH SOCKET 2 "4. dubna 1997" "BSD Man Page" "Linux - příručka programátora" +.\" Aktualizováno podle man-pages-3.09-2 z distribuce Fedora 10 +.TH SOCKET 2 "6. listopadu 2009" "BSD Man Page" "Linux - příručka programátora" .do hla cs .do hpf hyphen.cs .SH JMÉNO socket \- vytvoř soket .SH SYNTAXE -.B #include +\fB#include \fP /*Viz POZNÁMKY*/ .br .B #include .sp @@ -18,72 +19,71 @@ specifikuje jmenný prostor, ve kterém se bude komunikace odehrávat; tím je zvolena i rodina protokolů, které mohou být použity. Tyto rodiny jsou definovány v hlavičkovém souboru -.IR sys/socket.h . +.IR . V současné době jsou podporovány tyto formáty: +.sp +Jméno Účel Man stránka +.br +\fBAF_UNIX, AF_LOCAL\fP Lokální komunikace \fBunix\fP(7) +.br +\fBAF_INET\fP Internetové protokolu IPv4 \fBip\fP(7) +.br +\fBAF_INET6\fP Internetové protokolu IPv6 \fBipv6\fP(7) +.br +\fBAF_IPX\fP Protokoly Novellu IPX +.br +\fBAF_NETLINK\fP Uživatelské rozhraní kernelu \fBnetlink\fP(7) +.br +\fBAF_X25\fP ITU-T X.25/ISO-8205 protokol \fBx25\fP(7) +.br +\fBAF_AX25\fP Protokol pro Amatérskárádiova AX.25 +.br +\fBAF_ATMPVC\fP Přístup k ATM PVC +.br +\fBAF_APPLETALK\fP Appletalk \fBddp\fP(7) +.br +\fBAF_PACKET\fP paketové rozhraní nízké úrovně \fBpacket\fP(7) -.RS -.TP 0.9i -AF_UNIX -(interní protokol UNIXu) -.TP -AF_INET -(Internetový jmenný prostor) -.TP -AF_ISO -(protokoly ISO) -.TP -AF_NS -(protokoly Xerox Network Systems) -.TP -AF_IMPLINK -(IMP \*(lqhost at IMP\*(rq link layer) -.RE - -Soket má typ +Soket má typ .IR type , který specifikuje komunikační styl. Podporované typy jsou: - -.RS -.nf -SOCK_STREAM -SOCK_DGRAM -SOCK_RAW -SOCK_SEQPACKET -SOCK_RDM -.fi -.RE - -A +.TP .B SOCK_STREAM poskytuje sekvenční, spolehlivou a dvoustrannou proudovou komunikaci. Může být podporován mechanismus přenosu out-of-band dat. +.TP .B SOCK_DGRAM -soket podporuje datagramy (nespojované, nespolehlivé zprávy pevné (typicky +Podporuje datagramy (nespojované, nespolehlivé zprávy pevné (typicky malé) maximální délky). +.TP .B SOCK_SEQPACKET -soket poskytuje sekvenční, spolehlivý, dvojstranný přenos dat pro datagramy -pevné maximální délky; konzument může číst tato data voláním jádra. Tento -typ je v současné době implementován pouze pro -.BR AF_NS . +Poskytuje sekvenční, spolehlivý, dvojstranný přenos dat pro datagramy +pevné maximální délky. Konzument musí přečíst celý paket při každém volání +systému. +.TP .B SOCK_RAW -poskytuje přístup k interním síťovým protokolům a rozhraním. -Typy -.BR SOCK_RAW , -který je k dispozici pouze superuživateli a -.BR SOCK_RDM , -který je plánován, ale ještě není implementován, zde nejsou popsány. - +Poskytuje spolehlivou datagramovou vrstvu, která však nezaručuje řazení. +.TP +.B SOCK_PACKET +Zastaralé. Nemělo by být používáno v nových aplikacích. Viz \fBpacket\fP(7). +.PP +Některé druhy soketů nemusí být implementovány pro všechny rodiny protokolů. +Například +.B SOCK_SEQPACKET +není implementováno pro +.B AF_INET. +.sp Argument .I protocol specifikuje, který konkrétní protokol má být použit. Normálně existuje pouze jeden protokol, který se dá použít u soketu konkrétního typu a dané rodiny protokolů. Ale je samozřejmě možné, aby existovalo protokolů více. Číslo -protokolu závisí na použitém jmenném prostoru, bližší informace naleznete v +protokolu závisí na použitém jmenném prostoru, bližší informace naleznete v .BR protocols (5). Sokety typu .B SOCK_STREAM -jsou plně duplexní proudy dat podobné rourám. Proudový soket musí být +jsou plně duplexní proudy dat podobné rourám. Proudový soket musí být .I spojen před tím, než přijme nebo pošle jakákoliv data. Spojení s jiným soketem se provádí voláním @@ -98,7 +98,7 @@ .BR recv (2). Je-li sezení ukončeno, můžete zavolat funkci .BR close (2). -Out-of-band data mohou být poslána. Konkrétní informace najdete v +Out-of-band data mohou být poslána. Konkrétní informace najdete v .BR send (2). Out-of-band data mohou být přijata voláním .BR recv (2). @@ -107,23 +107,19 @@ .B SOCK_STREAM zaručují, že data se neztratí a ani nebudou duplikována. Je-li část dat, pro kterou je k dispozici prostor ve vyrovnávací paměti, nedoručena po rozumnou -dobu, je spojení prohlášeno za přerušené a volání budou vracet chyby (\-1) a -globální proměnná errno bude nastavena na -.B ETIMEDOUT . - -Některé protokoly uchovávají sokety v činnosti tím, že přibližně každou -minutu posílají packet, nevyskytuje-li se jiná aktivita. Neobjeví-li se -odpověď po delší dobu (např. 5 minut), je opět indikována chyba. Signál +dobu, je spojení prohlášeno za přerušené. Pokud je na soketu povoleno +.B SO_KEEPALIVE +pak soket testuje různými metodami závislými na protokolu zda je druhý konec +stále aktivní. Je zaslán signál .B SIGPIPE -je poslán procesu, jestliže proces pošle data do "rozbitého" proudu. -To způsobí, že "naivní" procesy, které neobsluhují tento signál skončí. - +pokud proces zasílá nebo přijímá data z porušeného proudu dat; pokud proces +nemá obslužnou funkci pak je při přijetí tohoto signálu ukončen. Sokety .B SOCK_SEQPACKET -sokety používají stejná volání jako -.B SOCK_STREAM -sokety. Jediným rozdílem je, že volání -.BR read (2) -vrací pouze požadované množství dat a ostatní data budou zničena. +mají stejnou množinu signálů jako sokety +.B SOCK_STREAM. +Jediným rozdílem je, že volání \fBread\fP(2) vrací pouze požadovanou velikost +dat a zbylá data, která zůstala v paketu budou smazána. Zachovány jsou také +meze pro příchozí datagramy. .B SOCK_DGRAM a @@ -134,13 +130,31 @@ .BR recvfrom (2), které vrací další datagram s jeho návratovou adresou. -Volání +Operace .BR fcntl (2) -může být použito ke specifikování skupiny procesů, které obdrží signál +.B F_SETOWN +může být použita ke specifikování procesu nebo skupiny procesů, které obdrží +signál .B SIGURG -při příchodu out-of-band dat. Může také povolit neblokující vstupně-výstupní +při příchodu out-of-band dat, nebo +.B SIGPIPE +signálu, když je +.B SOCK_STREAM +spojení neočekávaně přerušeno. Může také povolit neblokující vstupně-výstupní operace případně asynchronní hlášení vstupně-výstupních událostí signálem .BR SIGIO . +Použití +.B F_SETOWN +je ekvivalentní volání \fBioctl\fP(2) s parametrem +.B FIOSETOWN +nebo +.B SIOCSPGRP. + +Pokud síť signalizuje chybu protokolovému modulu (například pomocí ICMP +zprávy pro IP protokol) je soketu přiřazen příznak značící nevyřešenou chybu. +Další operace na tomto soketu obnoví tento příznak. Pro některé protokoly je +možné zřídit frontu chyb pro každý soket a získat tak detailní informace +o chybách. Viz \fBIP_RECVERR\fP v \fBip\fP(7). Operace soketu jsou řízeny volbami soketů. Tyto volby jsou specifikovány v hlavičkovém souboru @@ -154,32 +168,57 @@ \-1 je vrácena, jestliže nastala chyba, jinak je vrácen deskriptor soketu. .SH CHYBY .TP 0.8i +.B EACCESS +Nemáte právo vytvořit soket specifikovaného typu a/nebo protokolu. +.TP .B EPROTONOSUPPORT Komunikační styl nebo protokol není podporován specifikovaným jmenným prostorem. .TP +.B EINVAL +Neznámý protokol, nebo rodina protokolů není k dispozici. +.TP .B EMFILE Tabulka deskriptorů procesu je zaplněna. .TP .B ENFILE Tabulka otevřených souborů systému je zaplněna. .TP -.B EACCESS -Nemáte právo vytvořit soket specifikovaného typu a/nebo protokolu. -.TP -.B ENOBUFS +\fBENOBUFS\fP nebo \fBENOMEM\fP Nedostatek vyrovnávacích pamětí. Soket nemůže být vytvořen, dokud nedojde k uvolnění zdrojů. +.TP +.B EPROTONOSUPPORT +Typ protokolu nebo specifikovaný protokol není podporovaný v +dané doméně. .SH SPLŇUJE STANDARDY -4.4BSD (volání jádra +4.4BSD, POSIX.1-2001 (volání jádra .B socket se objevilo v 4.2BSD). Obvykle je kompatibilní s ne-BSD systémy, které podporují BSD Sokety (včetně variant Systému V). +.SH POZNÁMKY +POSIX.1-2001 nevyžaduje vložení hlavičkového souboru \fI\fP +a tento soubor není vyžadován ani v linuxu. Nicméně některé starší +BSD implementace jej vyžadují a proto je doporučeno jej vložit +do přenositelných aplikací. + +Konstanty používané v BSD 4.X pro rodiny protokolů jsou pojmenovány +.B PF_UNIX, PF_INET +zatímco adresové rodiny jsou pojmenované +.B AF_UNIX, +atd. Nicméně BSD man stránky tvrdí, že adresové a protokolové rodiny +jsou to samé, a že je možné používat předponu AF_* všude. +.SH CHYBY V IMPLEMENTACI +.B SOCK_UUCP +ještě není implementováno +.SH PŘÍKLAD +Příklad použití funkce \fBsocket\fP() je v \fBgetaddrinfo\fP(3). .SH DALŠÍ INFORMACE -.BR accept "(2), " bind "(2), " connect "(2), " getprotoent "(3), " -.BR getsockname "(2), " getsockopt "(2), " ioctl "(2), " listen "(2), " +.BR accept "(2), " bind "(2), " connect "(2), " fnctl "(2), " getpeername "(2), +.BR getsockname "(2), " getsockopt "(2), " ioctl "(2), " listen "(2), .BR read "(2), " recv "(2), " select "(2), " send "(2), " shutdown "(2), " -.BR socketpair "(2), " write (2) +.BR socketpair "(2), " write "(2), " getprotoent "(3), " ip "(7), " socket "(7), +.BR tcp "(7), " udp "(7), " unix "(7) .sp "An Introductory 4.3 BSD Interprocess Communication Tutorial" je znovu vydáno v @@ -188,5 +227,7 @@ "BSD Interprocess Communication Tutorial" je znovu vydáno v .I UNIX Programmer's Supplementary Documents Volume 1 -.SH VAROVÁNÍ -Překlad je pravděpodobně zastaralý. Pokud chcete pomoci s jeho aktualizací, zamiřte na http://man-pages-cs-wiki.homelinux.net/ +.SH TIRÁŽ +Tato stránka je součástí projektu Linux \fIman\-pages\fP. Popis projektu a +informace o hlášení chyb najdete na http://www.kernel.org/doc/man\-pages/. + diff -ur man-pages-cs-0.18.20090209-orig/man-pages/man3/gethostbyname.3 man-pages-cs-0.18.20090209/man-pages/man3/gethostbyname.3 --- man-pages-cs-0.18.20090209-orig/man-pages/man3/gethostbyname.3 1999-05-31 19:28:32.000000000 +0200 +++ man-pages-cs-0.18.20090209/man-pages/man3/gethostbyname.3 2009-11-13 12:51:02.000000000 +0100 @@ -1,9 +1,11 @@ -.TH GETHOSTBYNAME 3 "30. března 1997" "BSD" "Linux - příručka programátora" +.\" Aktualizováno podle man-pages-3.09-2 z distribuce Fedora 10 +.TH GETHOSTBYNAME 3 "5. listopadu 2009" "BSD" "Linux - příručka programátora" .do hla cs .do hpf hyphen.cs .SH JMÉNO -gethostbyname, gethostbyaddr, sethostent, endhostent, herror \- získej -záznam z databáze počítačů +gethostbyname, gethostbyaddr, sethostent, gethostend, endhostent, h_errno, +herror, hstrerror, gethostbyaddr_r, gethostbyname2, gethostbyname2_r, +gethostbyname_r, gethostent_r, \- zjistí záznam z databáze počítačů .SH SYNTAXE .nf .B #include @@ -11,6 +13,7 @@ .sp .BI "struct hostent *gethostbyname(const char *" name ); .sp +.BI "#include " /*AF_INET*/ .BI "struct hostent *gethostbyaddr(const char *" addr ", int " len ", int " type ); .sp .BI "void sethostent(int " stayopen ); @@ -18,33 +21,86 @@ .B void endhostent(void); .sp .BI "void herror(const char *" s ); +.sp +.BI "const char *hstrerror(int " err ); +.sp +/*rozšíření System V/POSIX*/ +.B struct hostent *gethostent(void); +.sp +/*rozšíření GNU*/ +.BI "struct hostent *gethostbyname2(const char *" name ", int " af ); +.sp +.TP +.B int gethostend_r( +.BI "struct hostent *" ret ", char *" buf ", size_t " buflen ", +.BI "struct hostent **" result ", int *" h_errnop ); +.sp +.TP +.BI "int gethostbyaddr_r(const void *" addr ", socklen_t " len " , int " type ", +.BI "struct hostent *" ret ", char *" buf ", size_t " buflen ", +.BI "struct hostent **" result ", int *" h_errnop ); +.sp +.TP +.BI "int gethostbyname_r(const char *" name +.BI "struct hostent *" ret ", char *" buf ", size_t " buflen ", +.BI "struct hostent **" result ", int *" h_errnop ); +.sp +.TP +.BI "int gethostbyname2_r(const char *" name ", int " af ", +.BI "struct hostent *" ret ", char *" buf ", size_t " buflen ", +.BI "struct hostent **" result ", int *" h_errnop ); +.PP +.sp +Vyžaduje Feature Test Makro pro glibc (viz \fBfeature_test_macros\fP(7)): +.sp +\fBgethostbyname2\fP(), \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), +\fBgethostbyname2_r\fP(): _BSD_SOURCE || _SVID_SOURCE .fi .SH POPIS +Funkce \fBgethostbyname*\fP() a \fBgethostbyaddr*\fP() jsou zastaralé. +V programech by měly být nahrazeny funkcemi \fBgetaddrinfo\fP(3) a +\fBgetnameinfo\fP(3). +.sp Funkce \fBgethostbyname()\fP vrací strukturu typu \fIhostent\fP -pro zadaný počítač \fIname\fP. Doména počítače a jí nadřazené jsou +pro zadaný počítač \fIname\fP. V poli \fIname\fP může být buď +hostaname nebo IPv4 adresa v klasické tečkové notaci (jako v +\fBinet_addr\fP(3)), případně IPv6 adresa v dvojtečkové +(případně v tečkové) notaci. (Více informací o formátu IPv6 +adres lze nalézt v RFC 1884.) Je-li jméno IPv4 nebo IPv6 adresa +není prováděno žádné hledání a \fBgethostbyname\fP() jednoduše +zkopíruje \fIname\fP do pole \fIh_name\fP a strukturu \fIstruct in_addr\fP +do pole \fIh_addr_list[0]\fP ve vracené struktuře \fIhostent\fP. +Doména počítače a jí nadřazené jsou prohledávány pouze tehdy, nekončí-li \fIname\fP tečkou. Pokud \fIname\fP nekončí tečkou a proměnná prostředí \fBHOSTALIASES\fP -je nastavena, bude prvně prohledáván soubor, na který ukazuje proměnná +je nastavena, bude prvně prohledáván soubor, na který ukazuje proměnná \fBHOSTALIASES\fP. .PP -Funkce \fBgethostbyaddr()\fP vrací strukturu typu \fIhostent\fP pro +Funkce \fBgethostbyaddr\fP() vrací strukturu typu \fIhostent\fP pro počítač, jehož adresa \fIaddr\fP (délky \fIlen\fP a typu \fItype\fP) byla -zadána. Jediným platný typem adresy je nyní AF_INET. +zadána. Platné typy adres jsou AF_INET a AF_INET6. Parametr adresa hosta je +ukazatel do struktury jejíž typ závisí na druhu adresy. Například +\fI struct in_addr *\fP (zřejmě získáno skrze volání \fBinet_addr\fP(3)) +pro adresy typu +.B AF_INET. .PP -Funkce \fBsethostent()\fP specifikuje, je-li \fIstayopen\fP pravdivé (1), +Funkce \fBsethostent()\fP specifikuje, je-li \fIstayopen\fP pravdivé (1), že k dotazování budou použity spojené TCP sokety a spojení zůstane mezi jednotlivými dotazy otevřeno. Jinak budou k dotazování použity UDP datagramy. .PP Funkce \fBendhostent()\fP ukončí TCP spojení pro dotazy na nameserver. .PP -Funkce \fBherror()\fP vytiskne chybovou zprávu, která přísluší hodnotě -proměnné \fIh_errno\fP. +Funkce \fBherror()\fP vytiskne chybovou zprávu, +která přísluší hodnotě proměnné \fIh_errno\fP. +.PP +Zastaralá funkce \fBhsterror\fP() vezme číslo chyby (obvykle \fIh_errno\fP) +a vrátí odpovídající řetězec. .PP Funkce \fBgethostbyname()\fP a \fBgethostbyaddr()\fP používají při své činnosti jak nameservery \fBnamed\fP(8), tak soubor \fI/etc/hosts\fP, ale samozřejmě i NIS nebo YP, to záleží na pořadí definovaném v \fI/etc/host.conf\fP. -(Viz +(Viz .BR resolv+ (8)). Standardně je prvně dotazován \fBnamed\fP(8) a potom soubor \fI/etc/hosts\fP. @@ -56,13 +112,13 @@ .ne 7 .ta 8n 16n 32n struct hostent { - char *h_name; /* official name of host */ - char **h_aliases; /* alias list */ - int h_addrtype; /* host address type */ - int h_length; /* length of address */ - char **h_addr_list; /* list of addresses */ + char *h_name; /* official name of host */ + char **h_aliases; /* alias list */ + int h_addrtype; /* host address type */ + int h_length; /* length of address */ + char **h_addr_list; /* list of addresses */ } -#define h_addr h_addr_list[0] /* for backward compatibility */ +#define h_addr h_addr_list[0] /* for backward compatibility */ .ta .fi .RE @@ -89,14 +145,15 @@ .SH NÁVRATOVÁ HODNOTA Funkce \fBgethostbyname()\fP a \fBgethostbyaddr()\fP vrací strukturu \fIhostent\fP nebo ukazatel NULL v případě výskytu chyby. Potom je nastavena -proměnná \fIh_errno\fP. -.SH CHYBY +proměnná \fIh_errno\fP. Pokud je návratová hodnota not-NULL pak zřejmě +návratová hodnota odkazuje na statická data. Více informací v poznámkách níže. +.SH ROZEZNÁVANÉ CHYBY Proměnná \fIh_errno\fP může obsahovat následující hodnoty: .TP .B HOST_NOT_FOUND Specifikovaný počítač je neznámý. .TP -.B NO_ADDRESS +\fBNO_ADDRESS\fP nebo \fBNO_DATA\fP Jméno je platné, ale nemá žádnou IP adresu. .TP .B NO_RECOVERY @@ -111,9 +168,67 @@ .TP .I /etc/hosts databáze počítačů. +.TP +.I /etc/nsswitch.conf +konfigurační soubor pro výběr jmenné služby +.SH POZNÁMKY +Funkce \fBgethostbyname\fP() a \fBgethostbyaddr\fP() mohou vracet +ukazatele na statická data. Tyto ukazatele mohou být přepsány pozdějším +voláním. Zkopírování hodnoty do \fIstruct hostent\fP +není dostatečné, protože obsahuje ukazatele. +.sp +V originálních BSD implementacích měl parametr \fIlen\fP funkce +\fBgethostbyname\fP() typ \fIint\fP. Standard SUSv2 je chybový +a deklaruje parametr \fIlen\fP funkce \fBgethostbyaddr\fP() jako +typ \fIsize_t\fP. (Což je špatně, protože musí být typu \fIint\fP +a ne \fIsize_t\fP. Norma POSIX.1-2001 mu přiřazuje typ \fIsocklen_t\fP +.sp +U BSD prototypu funkce \fBgethostbyaddr\fP() je první argument typu +\fIconst char *\fP. +.sp +Norma POSIX.1-2001 označila funkce \fBgethostbyaddr\fP() a \fBgethostbyname\fP() +za zastaralé. Viz \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), \fBgai_sterror\fP(3). +.sp +.B System V/POSIX rozšíření +.br +POSIX vyžaduje, aby volání \fBgethostent\fP() vracelo další záznam z +hostitelské databáze. Pokud používáme DNS/BIND tak to nedává moc smysl, +nicméně může to být užitečné, pokud hostitelská databáze obsahuje soubory, +které mohou být čteny po řádcích. Na mnoha systémech čte tato funkce ze +souboru \fI/etc/hosts\fP. Funkce může být dostupná pouze pokud byla +knihovna přeložena bez podpory DNS. Glibc verze ignoruje IPv6 záznamy. +Tato funkce není reentrantní. Glibc proto přidává reentrantní verzi +\fBgethostent_r\fP(). +.sp +.B GNU rozšíření +.br +Glibc2 zavádí také funkci \fBgethostbyname2\fP() která pracuje stejně jako +funkce \fBgethostbyname\fP(), ale umožňuje specifikaci rodiny do níž musí +adresa spadat. +.sp +Glibc2 zavádí reentrantní funkce \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), +\fBgethostbyname_r\fP() a \fBgethostbynbame2_r\fP(). Volající musí poskytnout +\fIhostent\fP strukturu \fIret\fP, která bude v případě úspěchu naplněna, a +dočasný pracovní buffer \fIbuf\fP o velikosti \fIbuflen\fP. Po skončení funkce +bude \fIresult\fP obsahovat ukazatel na výsledek v případě úspěšného volání. +V případě chyby nebo když není nalezen žádný záznam je \fIresult\fP NULL. Tato +funkce vrací v případě úspěchu 0 a nenulovou hodnotu při v případě chyby. V +návaznosti na chyby vracené nereentrantními verzemi je vrácena chyba +.B ERANGE +v případě, že je poskytnutý buffer \fIbuf\fP příliš malý. Volání by pak mělo být +realizováno s větším množstvím paměti. Globální proměnná \fIh_errno\fP není +změněna, ale adresa proměnné do které se ukládají čísla chyb je předána +\fIh_errnop\fP. +.SH CHYBY +Funkce \fBgethostbyname\fP() nerozeznává části IPv4 adresy, +které jsou zadané v tečkové konvenci hexadecimálně. .SH SPLŇUJE STANDARDY BSD 4.3 .SH DALŠÍ INFORMACE -.BR resolver "(3), " hosts "(5), " hostname "(7), " resolv+ " (8), " named (8) -.SH VAROVÁNÍ -Překlad je pravděpodobně zastaralý. Pokud chcete pomoci s jeho aktualizací, zamiřte na http://man-pages-cs-wiki.homelinux.net/ +.BR getaddrinfo "(3), " getnameinfo "(3), " inet "(3), " inet_ntop "(3) +.BR inet_pton "()3 +.BR resolver "(3), " hosts "(5), "nsswitch.conf "(5), " hostname "(7), " named (8) +.SH TIRÁŽ +Tato stránka je součástí projektu Linux \fIman\-pages\fP. Popis projektu a +informace o hlášení chyb najdete na http://www.kernel.org/doc/man\-pages/. +