File: accept.2

package info (click to toggle)
manpages-pl 1%3A0.6-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 20,896 kB
  • ctags: 7
  • sloc: sh: 112; makefile: 59; perl: 32
file content (300 lines) | stat: -rw-r--r-- 10,991 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
.\" 1999 PTM, Przemek Borys
.\" Last Update: Andrzej Krzysztofowicz <ankry@mif.pg.gda.pl>, Maj 2002,
.\"              manpages 1.49
.\"
.\" Copyright (c) 1983, 1990, 1991 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     $Id: accept.2,v 1.11 2002/05/31 23:22:30 ankry Exp $
.\"
.\" Modified Sat Jul 24 16:42:42 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Mon Oct 21 23:05:29 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 1998,1999 by Andi Kleen to match Linux 2.2 reality
.\" Modified Tue Apr 23 20:33:18 CEST 2002 by Roger Luethi <rl@hellgate.ch>
.TH ACCEPT 2 2002-04-23 "Linux 2.2" "Podręcznik programisty Linuksa"
.SH NAZWA
accept \- przyjmowanie połączenia na gnieździe
.SH SKŁADNIA
.B #include <sys/types.h>
.br
.B #include <sys/socket.h>
.sp
.BI "int accept(int " s ", struct sockaddr *" addr ", socklen_t *" addrlen );
.SH OPIS
\fI Uwaga! To tłumaczenie może być nieaktualne!\fP
.PP

Funkcja
.B accept
jest używana z połączeniowymi typami gniazd 
.RB ( SOCK_STREAM ,
.B SOCK_SEQPACKET
i
.BR SOCK_RDM ).
Wyciąga ona pierwsze żądanie połączenia z kolejki oczekujących połączeń,
tworzy nowo podłączone gniazdo o tych samych właściwościach co
.I s
i alokuje nowy deskryptor pliku dla gniazda, który to deskryptor jest
zwracany. Nowo utworzone gniazdo nie jest już w stanie nasłuchiwania.
Oryginalne gniazdo
.I s
pozostaje po wywołaniiu funkcji niezmienione. Należy zauważyć, że żadne
znaczniki dotyczące deskryptora pliku (wszystko, co można ustawić za pomocą
.BR F_SETFL ,
jak stan nieblokujący czy asynchroniczny) nie są poprzez
.I accept
dziedziczone.
.PP
Argument
.I s
jest gniazdem, które zostało utworzone wywołaniem
.BR socket (2),
przywiązanym do adresu lokalnego z pomocą
.BR bind (2),
i nasłuchującym połączeń po wywołaniu
.BR listen (2).

Argument
.I addr
jest wskaźnikiem do struktury sockaddr. Do struktury tej jest wpisywany adres
łączącej się jednostki, przekazany przez warstwę komunikacyjną. Dokładny
format adresu przekazywanego w parametrze
.I addr
jest określony poprzez rodzinę gniazda (zobacz
.BR socket (2)
i strony podręcznika dotyczące odpowiedniego protokołu).
Argument
.I addrlen
jest parametrem wartościowo-wynikowym: powinien początkowo zawierać rozmiar
struktury, na którą wskazuje 
.IR addr ;
po zakończeniu będzie zawierał rzeczywistą długość zwracanego adresu
(w bajtach). Gdy
.B addr
jest równe NULL, to nic nie jest wypełniane.
.PP
Jeśli nie ma zalegających połączeń w kolejce, a gniazdo nie jest zaznaczone
jako nieblokujące, to
.B accept
blokuje proces wywołujący aż do uzyskania połączenia. Gdy gniazdo jest
zaznaczone jako nieblokujące i nie ma zalegających połączeń w kolejce,
.B accept
zwraca EAGAIN.
.PP
Aby być informowanym o nadchodzących do gniazda połączeniach, można użyć
.BR select (2)
lub
.BR poll (2).
Podczas próby nowego połączenia zostanie dostarczone zdarzenie
odczytywalności (readable) i wtedy można wywołać
.B accept
aby uzyskać gniazdo tego połączenia. Inaczej, można ustawić gniazdo tak, by
dostarczało
.B SIGIO
za każdym razem, gdy się na nim coś zacznie dziać; szczegóły można znaleźć w
.BR socket (7).
.PP
Dla niektórych protokołów wymagających bezpośredniego potwierdzania, takich
jak
DECNet,
.B accept
może być uważane za funkcję zdejmującą z kolejki następne żądanie połączenia,
nie powodując potwierdzenia. Potwierdzenie można spowodować przez normalny
odczyt, lub zapis na nowym deskryptorze pliku, a odrzucenie można spowodować,
zamykając gniazdo. Obecnie pod Linuksem taką semantykę ma tylko
DECNet.
.SH UWAGI
Nie zawsze po dostarczeniu
.B SIGIO
musi istnieć oczekujące połączenie. To samo dotyczy
.BR select (2)
i
.BR poll (2),
zwracających zdarzenie odczytywalności, ponieważ połączenie mogło zostać
usunięte przez asynchroniczny błąd sieci lub inny wątek, przed wywołaniem
.BR accept .
Jeśli to się zdarzy, to wywołanie będzie blokować, oczekując następnego
połączenia.
Aby upewnić się, że
.B accept
nigdy nie będzie blokowało,
.I s
powinno mieć ustawiony znacznik
.B O_NONBLOCK
(zobacz
.BR socket (7)).
.SH "WARTOŚĆ ZWRACANA"
Wywołanie w przypadku błędu zwraca \-1. Gdy zakończy sie pomyślnie zwraca
nieujemną liczbę całkowitą, która jest deskryptorem przyjętego gniazda.
.SH "OBSŁUGA BŁĘDÓW"
Linuksowe
.B accept 
przekazuje zalegające już na nowym gnieździe błędy sieciowe jako kod błędu z
.BR accept . 
Zachowanie to różni się od implementacji gniazd w BSD. Dla sensownego
działania, aplikacja powinna wykrywać po wykonaniu
.B accept
błędy sieciowe, zdefiniowane dla danego protokołu i traktować je jak
.BR EAGAIN ,
czyli ponawiać próbę. W wypadku TCP/IP są to
.BR ENETDOWN ,
.BR EPROTO ,
.BR ENOPROTOOPT ,
.BR EHOSTDOWN ,
.BR ENONET ,
.BR EHOSTUNREACH ,
.B EOPNOTSUPP
i
.BR ENETUNREACH .
.SH BŁĘDY
Funkcja
.B accept
musi zakończyć się niepomyślnie gdy:
.TP
.BR EAGAIN " lub " EWOULDBLOCK
Gniazdo jest zaznaczone jako nieblokujące a brak jest połączeń, które mogłyby
zostać przyjęte.
.TP
.B EBADF
Deskryptor jest nieprawidłowy.
.TP
.B ENOTSOCK
Deskryptor odnosi się do pliku, zamiast do gniazda.
.TP
.B EOPNOTSUPP
Przekazane gniazdo nie jest typu
.BR SOCK_STREAM . 
.TP
.B EINTR
Funkcja systemowa została przerwana wskutek odebrania sygnału przed
prawidłowym nawiązaniem połączenia.
.TP
.B ECONNABORTED
Połączenie zostało przerwane.
.TP
.B EINVAL
Gniazdo nie nasłuchuje połączeń.
.TP
.B EMFILE
Osiągnięte zostało ograniczenie liczby otwartych deskryptorów plików dla
procesu.
.TP
.B ENFILE
Osiągnięte zostało systemowe ograniczenie liczby otwartych deskryptorów
plików.
.PP
Funkcja
.B accept
może zakończyć się niepomyślnie gdy:
.TP
.B EFAULT
Parametr
.I addr
nie znajduje się w przestrzeni adresowej dostępnej do zapisu dla użytkownika.
.TP
.B ENOBUFS, ENOMEM
Jest niedostateczna ilość wolnej pamięci.
Oznacza to zazwyczaj, że istnieje ograniczenie dla przydzielania pamięci na
bufory gniazd, nie zaś że zabrakło pamięci w systemie.
.TP
.B EPROTO
Wystąpił błąd protokołu.
.PP
W Linuksie
.B accept
może również zakończyć się niepomyślnie gdy:
.TP
.B EPERM
Reguły firewalla zabraniają połączenia.
.TP
Dodatkowo, dla nowego gniazda mogą być zwracane błędy sieciowe zdefiniowane
dla danego protokołu. Różne jądra Linuksa mogą zwracać inne błędy, takie jak
.BR ENOSR ,
.BR ESOCKTNOSUPPORT ,
.BR EPROTONOSUPPORT ,
.BR ETIMEDOUT .
Wartość
.B ERESTARTSYS
może być obserwowana podczas śledzenia.
.SH "ZGODNE Z"
SVr4, 4.4BSD (funkcja
.B accept
pojawiła się pierwotnie w BSD 4.2).
Strona podręcznika BSD opisuje pięć możliwych zwracanych błędów
(EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT).
SUSv3 opisuje błędy EAGAIN, EBADF, ECONNABORTED, EINTR, EINVAL, EMFILE,
ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK.
SUSv2 opisuje dodatkowo błędy EFAULT i ENOSR.
.LP
Linuksowe accept _nie_ dziedziczy znaczników gniazda, takich jak
.BR O_NONBLOCK .
Takie zachowanie różni się od innych implementacji gniazd BSD.
Przenośne programy nie powinny zakładać takiego zachowania i zawsze ustawiać
dla gniazda zwracanego przez accept wszystkie potrzebne znaczniki.
.SH UWAGA
Trzeci argument
.B accept
był pierwotnie zadeklarowany jako `int *' (i jest pod libc4 i libc5 oraz
na wielu innych systemach, takich jak BSD 4.*, SunOS 4, SGI); W szkicu
standardu POSIX 1003.1g chciano to zmienić na `size_t *' i tak jest w SunOS 5.
Późniejsze szkice POSIX używają tu `socklen_t *' i tak samo robią Single
Unix Specification i glibc2.
Cytując Linusa Torvaldsa:
.\" .I fails: only italicizes a single line
\fI_Any_ sane library _must_ have "socklen_t" be the same size
as int.  Anything else breaks any BSD socket layer stuff.
POSIX initially _did_ make it a size_t, and I (and hopefully others, but
obviously not too many) complained to them very loudly indeed.  Making
it a size_t is completely broken, exactly because size_t very seldom is
the same size as "int" on 64-bit architectures, for example.  And it
_has_ to be the same size as "int" because that's what the BSD socket
interface is.
Anyway, the POSIX people eventually got a clue, and created "socklen_t".
They shouldn't have touched it in the first place, but once they did
they felt it had to have a named type for some unfathomable reason
(probably somebody didn't like losing face over having done the original
stupid thing, so they silently just renamed their blunder).\fP
.SH "ZOBACZ TAKŻE"
.BR bind (2),
.BR connect (2),
.BR listen (2),
.BR select (2),
.BR socket (2)
.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 accept
.PP
Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod
adresem http://sourceforge.net/projects/manpages\-pl/.