2004-11-03 13:51:07 +00:00
|
|
|
.\" Copyright (c) 1983, 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.
|
|
|
|
.\"
|
|
|
|
.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
|
|
|
|
.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
|
|
|
|
.\" Modified Oct 1998 by Andi Kleen
|
|
|
|
.\" Modified Oct 2003 by aeb
|
|
|
|
.\" Modified 2004-07-01 by mtk
|
|
|
|
.\"
|
2012-02-27 01:12:16 +00:00
|
|
|
.TH SEND 2 2012-02-27 "Linux" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
2004-12-20 10:53:41 +00:00
|
|
|
send, sendto, sendmsg \- send a message on a socket
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH SYNOPSIS
|
2007-04-03 14:04:54 +00:00
|
|
|
.nf
|
2004-11-03 13:51:07 +00:00
|
|
|
.B #include <sys/types.h>
|
|
|
|
.B #include <sys/socket.h>
|
|
|
|
.sp
|
2008-12-03 18:56:22 +00:00
|
|
|
.BI "ssize_t send(int " sockfd ", const void *" buf ", size_t " len \
|
2007-04-03 14:04:54 +00:00
|
|
|
", int " flags );
|
2007-12-23 13:45:24 +00:00
|
|
|
|
2008-12-03 18:56:22 +00:00
|
|
|
.BI "ssize_t sendto(int " sockfd ", const void *" buf ", size_t " len \
|
2007-04-03 14:04:54 +00:00
|
|
|
", int " flags ,
|
2008-12-03 20:42:47 +00:00
|
|
|
.BI " const struct sockaddr *" dest_addr ", socklen_t " addrlen );
|
2007-12-23 13:45:24 +00:00
|
|
|
|
2008-12-03 18:56:22 +00:00
|
|
|
.BI "ssize_t sendmsg(int " sockfd ", const struct msghdr *" msg \
|
2007-04-03 14:04:54 +00:00
|
|
|
", int " flags );
|
|
|
|
.fi
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH DESCRIPTION
|
|
|
|
The system calls
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR send (),
|
|
|
|
.BR sendto (),
|
2004-11-03 13:51:07 +00:00
|
|
|
and
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR sendmsg ()
|
2004-11-03 13:51:07 +00:00
|
|
|
are used to transmit a message to another socket.
|
|
|
|
.PP
|
|
|
|
The
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR send ()
|
2007-04-12 22:42:49 +00:00
|
|
|
call may be used only when the socket is in a
|
2004-11-03 13:51:07 +00:00
|
|
|
.I connected
|
|
|
|
state (so that the intended recipient is known).
|
|
|
|
The only difference between
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR send ()
|
2004-11-03 13:51:07 +00:00
|
|
|
and
|
2007-05-11 23:07:02 +00:00
|
|
|
.BR write (2)
|
2004-11-03 13:51:07 +00:00
|
|
|
is the presence of
|
|
|
|
.IR flags .
|
2010-08-29 06:33:07 +00:00
|
|
|
With a zero
|
2004-11-03 13:51:07 +00:00
|
|
|
.I flags
|
2008-07-10 20:53:08 +00:00
|
|
|
argument,
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR send ()
|
2004-11-03 13:51:07 +00:00
|
|
|
is equivalent to
|
2007-05-11 23:07:02 +00:00
|
|
|
.BR write (2).
|
2008-12-03 20:45:36 +00:00
|
|
|
Also, the following call
|
|
|
|
|
|
|
|
send(sockfd, buf, len, flags);
|
|
|
|
|
2004-11-03 13:51:07 +00:00
|
|
|
is equivalent to
|
2008-12-03 20:45:36 +00:00
|
|
|
|
|
|
|
sendto(sockfd, buf, len, flags, NULL, 0);
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
2008-07-10 20:53:08 +00:00
|
|
|
The argument
|
2008-12-03 20:45:53 +00:00
|
|
|
.I sockfd
|
2004-11-03 13:51:07 +00:00
|
|
|
is the file descriptor of the sending socket.
|
|
|
|
.PP
|
|
|
|
If
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR sendto ()
|
2007-06-22 20:40:07 +00:00
|
|
|
is used on a connection-mode
|
|
|
|
.RB ( SOCK_STREAM ,
|
|
|
|
.BR SOCK_SEQPACKET )
|
2008-07-10 20:53:08 +00:00
|
|
|
socket, the arguments
|
2008-12-03 20:42:47 +00:00
|
|
|
.I dest_addr
|
2004-11-03 13:51:07 +00:00
|
|
|
and
|
2008-12-03 20:42:47 +00:00
|
|
|
.I addrlen
|
2007-06-22 18:25:23 +00:00
|
|
|
are ignored (and the error
|
|
|
|
.B EISCONN
|
|
|
|
may be returned when they are
|
2007-06-22 20:40:07 +00:00
|
|
|
not NULL and 0), and the error
|
|
|
|
.B ENOTCONN
|
|
|
|
is returned when the socket was not actually connected.
|
2007-04-12 22:42:49 +00:00
|
|
|
Otherwise, the address of the target is given by
|
2008-12-03 20:42:47 +00:00
|
|
|
.I dest_addr
|
2007-04-12 22:42:49 +00:00
|
|
|
with
|
2008-12-03 20:42:47 +00:00
|
|
|
.I addrlen
|
2004-11-03 13:51:07 +00:00
|
|
|
specifying its size.
|
|
|
|
For
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR sendmsg (),
|
2004-11-03 13:51:07 +00:00
|
|
|
the address of the target is given by
|
|
|
|
.IR msg.msg_name ,
|
|
|
|
with
|
|
|
|
.I msg.msg_namelen
|
|
|
|
specifying its size.
|
|
|
|
.PP
|
|
|
|
For
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR send ()
|
2004-11-03 13:51:07 +00:00
|
|
|
and
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR sendto (),
|
2004-11-03 13:51:07 +00:00
|
|
|
the message is found in
|
|
|
|
.I buf
|
|
|
|
and has length
|
|
|
|
.IR len .
|
|
|
|
For
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR sendmsg (),
|
2004-11-03 13:51:07 +00:00
|
|
|
the message is pointed to by the elements of the array
|
|
|
|
.IR msg.msg_iov .
|
|
|
|
The
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR sendmsg ()
|
2004-11-03 13:51:07 +00:00
|
|
|
call also allows sending ancillary data (also known as control information).
|
|
|
|
.PP
|
|
|
|
If the message is too long to pass atomically through the
|
|
|
|
underlying protocol, the error
|
|
|
|
.B EMSGSIZE
|
|
|
|
is returned, and the message is not transmitted.
|
|
|
|
.PP
|
|
|
|
No indication of failure to deliver is implicit in a
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR send ().
|
2004-11-03 13:51:07 +00:00
|
|
|
Locally detected errors are indicated by a return value of \-1.
|
|
|
|
.PP
|
|
|
|
When the message does not fit into the send buffer of the socket,
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR send ()
|
accept.2, connect.2, eventfd.2, flock.2, open.2, posix_fadvise.2, read.2, recv.2, sched_setscheduler.2, select_tut.2, send.2, signalfd.2, splice.2, timerfd_create.2, write.2, flockfile.3, mkfifo.3, mq_notify.3, mq_open.3, pthread_tryjoin_np.3, scanf.3, random.4, ddp.7, epoll.7, fifo.7, ip.7, pipe.7, socket.7, spufs.7: Global fix: s/non-blocking/nonblocking/
The tendency in English, as prescribed in style guides like
Chicago MoS, is towards removing hyphens after prefixes
like "non-" etc.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-01-16 16:43:10 +00:00
|
|
|
normally blocks, unless the socket has been placed in nonblocking I/O
|
2007-04-12 22:42:49 +00:00
|
|
|
mode.
|
accept.2, connect.2, eventfd.2, flock.2, open.2, posix_fadvise.2, read.2, recv.2, sched_setscheduler.2, select_tut.2, send.2, signalfd.2, splice.2, timerfd_create.2, write.2, flockfile.3, mkfifo.3, mq_notify.3, mq_open.3, pthread_tryjoin_np.3, scanf.3, random.4, ddp.7, epoll.7, fifo.7, ip.7, pipe.7, socket.7, spufs.7: Global fix: s/non-blocking/nonblocking/
The tendency in English, as prescribed in style guides like
Chicago MoS, is towards removing hyphens after prefixes
like "non-" etc.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-01-16 16:43:10 +00:00
|
|
|
In nonblocking mode it would fail with the error
|
2004-11-03 13:51:07 +00:00
|
|
|
.B EAGAIN
|
2009-02-23 04:57:43 +00:00
|
|
|
or
|
|
|
|
.B EWOULDBLOCK
|
2004-11-03 13:51:07 +00:00
|
|
|
in this case.
|
|
|
|
The
|
|
|
|
.BR select (2)
|
|
|
|
call may be used to determine when it is possible to send more data.
|
|
|
|
.PP
|
|
|
|
The
|
|
|
|
.I flags
|
2008-07-10 20:53:08 +00:00
|
|
|
argument is the bitwise OR
|
2004-11-03 13:51:07 +00:00
|
|
|
of zero or more of the following flags.
|
2007-06-13 21:48:16 +00:00
|
|
|
.\" FIXME ? document MSG_PROXY (which went away in 2.3.15)
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2008-09-29 10:35:13 +00:00
|
|
|
.BR MSG_CONFIRM " (Since Linux 2.3.15)"
|
2005-12-14 16:41:14 +00:00
|
|
|
Tell the link layer that forward progress happened: you got a successful
|
2007-04-12 22:42:49 +00:00
|
|
|
reply from the other side.
|
|
|
|
If the link layer doesn't get this
|
2007-06-08 11:56:22 +00:00
|
|
|
it will regularly reprobe the neighbor (e.g., via a unicast ARP).
|
2007-04-12 22:42:49 +00:00
|
|
|
Only valid on
|
2005-12-14 16:41:14 +00:00
|
|
|
.B SOCK_DGRAM
|
|
|
|
and
|
|
|
|
.B SOCK_RAW
|
2007-04-12 22:42:49 +00:00
|
|
|
sockets and currently only implemented for IPv4 and IPv6.
|
|
|
|
See
|
2005-12-14 16:41:14 +00:00
|
|
|
.BR arp (7)
|
|
|
|
for details.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B MSG_DONTROUTE
|
2007-04-12 22:42:49 +00:00
|
|
|
Don't use a gateway to send out the packet, only send to hosts on
|
|
|
|
directly connected networks.
|
|
|
|
This is usually used only
|
|
|
|
by diagnostic or routing programs.
|
|
|
|
This is only defined for protocol
|
2004-11-03 13:51:07 +00:00
|
|
|
families that route; packet sockets don't.
|
|
|
|
.TP
|
2008-07-14 05:26:06 +00:00
|
|
|
.BR MSG_DONTWAIT " (since Linux 2.2)"
|
accept.2, connect.2, eventfd.2, flock.2, open.2, posix_fadvise.2, read.2, recv.2, sched_setscheduler.2, select_tut.2, send.2, signalfd.2, splice.2, timerfd_create.2, write.2, flockfile.3, mkfifo.3, mq_notify.3, mq_open.3, pthread_tryjoin_np.3, scanf.3, random.4, ddp.7, epoll.7, fifo.7, ip.7, pipe.7, socket.7, spufs.7: Global fix: s/non-blocking/nonblocking/
The tendency in English, as prescribed in style guides like
Chicago MoS, is towards removing hyphens after prefixes
like "non-" etc.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-01-16 16:43:10 +00:00
|
|
|
Enables nonblocking operation; if the operation would block,
|
2004-11-03 13:51:07 +00:00
|
|
|
.B EAGAIN
|
2009-02-23 04:57:43 +00:00
|
|
|
or
|
|
|
|
.B EWOULDBLOCK
|
2004-11-03 13:51:07 +00:00
|
|
|
is returned (this can also be enabled using the
|
|
|
|
.B O_NONBLOCK
|
2009-02-23 04:57:43 +00:00
|
|
|
flag with the
|
2004-11-03 13:51:07 +00:00
|
|
|
.B F_SETFL
|
|
|
|
.BR fcntl (2)).
|
|
|
|
.TP
|
2008-07-14 05:26:06 +00:00
|
|
|
.BR MSG_EOR " (since Linux 2.2)"
|
2005-12-14 16:41:14 +00:00
|
|
|
Terminates a record (when this notion is supported, as for sockets of type
|
|
|
|
.BR SOCK_SEQPACKET ).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.BR MSG_MORE " (Since Linux 2.4.4)"
|
|
|
|
The caller has more data to send.
|
|
|
|
This flag is used with TCP sockets to obtain the same effect
|
2007-06-22 19:42:52 +00:00
|
|
|
as the
|
|
|
|
.B TCP_CORK
|
|
|
|
socket option (see
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR tcp (7)),
|
|
|
|
with the difference that this flag can be set on a per-call basis.
|
2008-01-01 14:13:55 +00:00
|
|
|
|
2004-11-03 13:51:07 +00:00
|
|
|
Since Linux 2.6, this flag is also supported for UDP sockets, and informs
|
|
|
|
the kernel to package all of the data sent in calls with this flag set
|
|
|
|
into a single datagram which is only transmitted when a call is performed
|
2007-04-12 22:42:49 +00:00
|
|
|
that does not specify this flag.
|
|
|
|
(See also the
|
|
|
|
.B UDP_CORK
|
|
|
|
socket option described in
|
2005-12-14 16:30:49 +00:00
|
|
|
.BR udp (7).)
|
2005-12-14 16:41:14 +00:00
|
|
|
.TP
|
2008-07-14 05:26:06 +00:00
|
|
|
.BR MSG_NOSIGNAL " (since Linux 2.2)"
|
2007-04-12 22:42:49 +00:00
|
|
|
Requests not to send
|
|
|
|
.B SIGPIPE
|
2005-12-14 16:41:14 +00:00
|
|
|
on errors on stream oriented sockets when the other end breaks the
|
2007-04-12 22:42:49 +00:00
|
|
|
connection.
|
|
|
|
The
|
2005-12-14 16:41:14 +00:00
|
|
|
.B EPIPE
|
|
|
|
error is still returned.
|
|
|
|
.TP
|
|
|
|
.B MSG_OOB
|
|
|
|
Sends
|
|
|
|
.I out-of-band
|
2007-06-08 11:56:22 +00:00
|
|
|
data on sockets that support this notion (e.g., of type
|
2005-12-14 16:41:14 +00:00
|
|
|
.BR SOCK_STREAM );
|
|
|
|
the underlying protocol must also support
|
|
|
|
.I out-of-band
|
|
|
|
data.
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
|
|
|
The definition of the
|
|
|
|
.I msghdr
|
2007-04-12 22:42:49 +00:00
|
|
|
structure follows.
|
|
|
|
See
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR recv (2)
|
|
|
|
and below for an exact description of its fields.
|
2007-12-19 05:53:30 +00:00
|
|
|
.in +4n
|
2004-11-03 13:51:07 +00:00
|
|
|
.nf
|
2006-03-12 19:09:15 +00:00
|
|
|
|
2004-11-03 13:51:07 +00:00
|
|
|
struct msghdr {
|
2006-03-12 19:09:15 +00:00
|
|
|
void *msg_name; /* optional address */
|
|
|
|
socklen_t msg_namelen; /* size of address */
|
|
|
|
struct iovec *msg_iov; /* scatter/gather array */
|
|
|
|
size_t msg_iovlen; /* # elements in msg_iov */
|
|
|
|
void *msg_control; /* ancillary data, see below */
|
2010-08-29 06:29:04 +00:00
|
|
|
size_t msg_controllen; /* ancillary data buffer len */
|
2006-03-12 19:09:15 +00:00
|
|
|
int msg_flags; /* flags on received message */
|
2004-11-03 13:51:07 +00:00
|
|
|
};
|
|
|
|
.fi
|
2007-12-19 05:53:30 +00:00
|
|
|
.in
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
2007-04-12 22:42:49 +00:00
|
|
|
You may send control information using the
|
|
|
|
.I msg_control
|
|
|
|
and
|
|
|
|
.I msg_controllen
|
|
|
|
members.
|
|
|
|
The maximum control buffer length the kernel can process is limited
|
connect.2, listen.2, send.2, uname.2, cmsg.3, proc.5, arp.7, ddp.7, icmp.7, ip.7, raw.7, socket.7, tcp.7, udp.7: Global fix: eliminate mention of the obsolete sysctl(2) interface
Many pages still mention use of the obsolete sysctl(2) system
call, or used the term "sysctls"; rewrite these mentions to
instead be in terms of /proc interfaces.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2008-11-20 20:37:11 +00:00
|
|
|
per socket by the value in
|
|
|
|
.IR /proc/sys/net/core/optmem_max ;
|
|
|
|
see
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR socket (7).
|
|
|
|
.\" Still to be documented:
|
|
|
|
.\" Send file descriptors and user credentials using the
|
|
|
|
.\" msg_control* fields.
|
|
|
|
.\" The flags returned in msg_flags.
|
|
|
|
.SH "RETURN VALUE"
|
2004-12-20 12:24:06 +00:00
|
|
|
On success, these calls return the number of characters sent.
|
|
|
|
On error, \-1 is returned, and
|
|
|
|
.I errno
|
|
|
|
is set appropriately.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH ERRORS
|
2007-04-12 22:42:49 +00:00
|
|
|
These are some standard errors generated by the socket layer.
|
|
|
|
Additional errors
|
|
|
|
may be generated and returned from the underlying protocol modules;
|
|
|
|
see their respective manual pages.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B EACCES
|
intro.1, time.1, accept.2, bind.2, connect.2, execve.2, flock.2, getdents.2, getpriority.2, getuid.2, intro.2, ioctl.2, mincore.2, mknod.2, personality.2, ptrace.2, read.2, recv.2, select_tut.2, send.2, sendfile.2, shmctl.2, sigaction.2, signal.2, stat.2, times.2, truncate.2, umask.2, wait.2, MB_CUR_MAX.3, MB_LEN_MAX.3, argz_add.3, btowc.3, clearenv.3, clock.3, cmsg.3, end.3, endian.3, errno.3, exit.3, fgetwc.3, fgetws.3, fopen.3, fputwc.3, fputws.3, fseek.3, fwide.3, getfsent.3, getgrnam.3, gethostid.3, getipnodebyname.3, getmntent.3, getpwnam.3, getwchar.3, grantpt.3, iconv.3, iconv_close.3, iconv_open.3, insque.3, intro.3, iswalnum.3, iswalpha.3, iswblank.3, iswcntrl.3, iswctype.3, iswdigit.3, iswgraph.3, iswlower.3, iswprint.3, iswpunct.3, iswspace.3, iswupper.3, iswxdigit.3, malloc.3, mblen.3, mbrlen.3, mbrtowc.3, mbsinit.3, mbsnrtowcs.3, mbsrtowcs.3, mbstowcs.3, mbtowc.3, mkstemp.3, mktemp.3, nl_langinfo.3, openpty.3, posix_openpt.3, printf.3, ptsname.3, putwchar.3, qecvt.3, rcmd.3, readdir.3, rexec.3, rpc.3, setnetgrent.3, shm_open.3, sigpause.3, stdin.3, stpcpy.3, strftime.3, strptime.3, syslog.3, towctrans.3, towlower.3, towupper.3, ttyslot.3, ungetwc.3, unlocked_stdio.3, wcpcpy.3, wcpncpy.3, wcrtomb.3, wcscasecmp.3, wcscat.3, wcschr.3, wcscmp.3, wcscpy.3, wcscspn.3, wcsdup.3, wcslen.3, wcsncasecmp.3, wcsncat.3, wcsncmp.3, wcsncpy.3, wcsnlen.3, wcsnrtombs.3, wcspbrk.3, wcsrchr.3, wcsrtombs.3, wcsspn.3, wcsstr.3, wcstok.3, wcstombs.3, wcswidth.3, wctob.3, wctomb.3, wctrans.3, wctype.3, wcwidth.3, wmemchr.3, wmemcmp.3, wmemcpy.3, wmemmove.3, wmemset.3, wprintf.3, console_ioctl.4, pts.4, elf.5, filesystems.5, hosts.5, proc.5, ttytype.5, boot.7, capabilities.7, credentials.7, epoll.7, glob.7, koi8-r.7, path_resolution.7, pty.7, signal.7, suffixes.7, time.7, unicode.7, unix.7, uri.7, utf-8.7: global fix: s/Unix/UNIX/
The man pages were rather inconsistent in the use of "Unix"
versus "UNIX". Let's go with the trademark usage.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-10-12 04:45:38 +00:00
|
|
|
(For UNIX domain sockets, which are identified by pathname)
|
2004-11-03 13:51:07 +00:00
|
|
|
Write permission is denied on the destination socket file,
|
|
|
|
or search permission is denied for one of the directories
|
2007-04-12 22:42:49 +00:00
|
|
|
the path prefix.
|
|
|
|
(See
|
2007-05-26 12:41:39 +00:00
|
|
|
.BR path_resolution (7).)
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.BR EAGAIN " or " EWOULDBLOCK
|
2009-02-23 04:57:43 +00:00
|
|
|
.\" Actually EAGAIN on Linux
|
accept.2, connect.2, eventfd.2, flock.2, open.2, posix_fadvise.2, read.2, recv.2, sched_setscheduler.2, select_tut.2, send.2, signalfd.2, splice.2, timerfd_create.2, write.2, flockfile.3, mkfifo.3, mq_notify.3, mq_open.3, pthread_tryjoin_np.3, scanf.3, random.4, ddp.7, epoll.7, fifo.7, ip.7, pipe.7, socket.7, spufs.7: Global fix: s/non-blocking/nonblocking/
The tendency in English, as prescribed in style guides like
Chicago MoS, is towards removing hyphens after prefixes
like "non-" etc.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-01-16 16:43:10 +00:00
|
|
|
The socket is marked nonblocking and the requested operation
|
2004-11-03 13:51:07 +00:00
|
|
|
would block.
|
2009-02-23 04:57:43 +00:00
|
|
|
POSIX.1-2001 allows either error to be returned for this case,
|
|
|
|
and does not require these constants to have the same value,
|
|
|
|
so a portable application should check for both possibilities.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B EBADF
|
|
|
|
An invalid descriptor was specified.
|
|
|
|
.TP
|
|
|
|
.B ECONNRESET
|
|
|
|
Connection reset by peer.
|
|
|
|
.TP
|
|
|
|
.B EDESTADDRREQ
|
|
|
|
The socket is not connection-mode, and no peer address is set.
|
|
|
|
.TP
|
|
|
|
.B EFAULT
|
2008-07-10 20:53:08 +00:00
|
|
|
An invalid user space address was specified for an argument.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B EINTR
|
2008-07-04 15:50:36 +00:00
|
|
|
A signal occurred before any data was transmitted; see
|
|
|
|
.BR signal (7).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B EINVAL
|
|
|
|
Invalid argument passed.
|
|
|
|
.TP
|
|
|
|
.B EISCONN
|
|
|
|
The connection-mode socket was connected already but a
|
|
|
|
recipient was specified.
|
|
|
|
(Now either this error is returned, or the recipient specification
|
|
|
|
is ignored.)
|
|
|
|
.TP
|
|
|
|
.B EMSGSIZE
|
|
|
|
The socket type
|
|
|
|
.\" (e.g., SOCK_DGRAM )
|
|
|
|
requires that message be sent atomically, and the size
|
|
|
|
of the message to be sent made this impossible.
|
|
|
|
.TP
|
|
|
|
.B ENOBUFS
|
|
|
|
The output queue for a network interface was full.
|
|
|
|
This generally indicates that the interface has stopped sending,
|
|
|
|
but may be caused by transient congestion.
|
2007-04-12 22:42:49 +00:00
|
|
|
(Normally, this does not occur in Linux.
|
|
|
|
Packets are just silently dropped
|
2004-11-03 13:51:07 +00:00
|
|
|
when a device queue overflows.)
|
|
|
|
.TP
|
|
|
|
.B ENOMEM
|
|
|
|
No memory available.
|
|
|
|
.TP
|
|
|
|
.B ENOTCONN
|
|
|
|
The socket is not connected, and no target has been given.
|
|
|
|
.TP
|
|
|
|
.B ENOTSOCK
|
|
|
|
The argument
|
2008-12-03 21:01:54 +00:00
|
|
|
.I sockfd
|
2004-11-03 13:51:07 +00:00
|
|
|
is not a socket.
|
|
|
|
.TP
|
|
|
|
.B EOPNOTSUPP
|
|
|
|
Some bit in the
|
|
|
|
.I flags
|
|
|
|
argument is inappropriate for the socket type.
|
|
|
|
.TP
|
|
|
|
.B EPIPE
|
|
|
|
The local end has been shut down on a connection oriented socket.
|
|
|
|
In this case the process
|
2007-04-12 22:42:49 +00:00
|
|
|
will also receive a
|
|
|
|
.B SIGPIPE
|
|
|
|
unless
|
|
|
|
.B MSG_NOSIGNAL
|
2004-11-03 13:51:07 +00:00
|
|
|
is set.
|
|
|
|
.SH "CONFORMING TO"
|
2006-08-03 13:57:17 +00:00
|
|
|
4.4BSD, SVr4, POSIX.1-2001.
|
2004-11-03 13:51:07 +00:00
|
|
|
These function calls appeared in 4.2BSD.
|
|
|
|
.LP
|
2006-08-03 13:57:17 +00:00
|
|
|
POSIX.1-2001 only describes the
|
2004-11-03 13:51:07 +00:00
|
|
|
.B MSG_OOB
|
|
|
|
and
|
|
|
|
.B MSG_EOR
|
|
|
|
flags.
|
2011-10-01 04:55:40 +00:00
|
|
|
POSIX.1-2008 adds a specification of
|
|
|
|
.BR MSG_NOSIGNAL .
|
2004-11-03 13:51:07 +00:00
|
|
|
The
|
2007-04-12 22:42:49 +00:00
|
|
|
.B MSG_CONFIRM
|
2004-11-03 13:51:07 +00:00
|
|
|
flag is a Linux extension.
|
2006-03-12 19:09:15 +00:00
|
|
|
.SH NOTES
|
intro.1, time.1, accept.2, bind.2, connect.2, execve.2, flock.2, getdents.2, getpriority.2, getuid.2, intro.2, ioctl.2, mincore.2, mknod.2, personality.2, ptrace.2, read.2, recv.2, select_tut.2, send.2, sendfile.2, shmctl.2, sigaction.2, signal.2, stat.2, times.2, truncate.2, umask.2, wait.2, MB_CUR_MAX.3, MB_LEN_MAX.3, argz_add.3, btowc.3, clearenv.3, clock.3, cmsg.3, end.3, endian.3, errno.3, exit.3, fgetwc.3, fgetws.3, fopen.3, fputwc.3, fputws.3, fseek.3, fwide.3, getfsent.3, getgrnam.3, gethostid.3, getipnodebyname.3, getmntent.3, getpwnam.3, getwchar.3, grantpt.3, iconv.3, iconv_close.3, iconv_open.3, insque.3, intro.3, iswalnum.3, iswalpha.3, iswblank.3, iswcntrl.3, iswctype.3, iswdigit.3, iswgraph.3, iswlower.3, iswprint.3, iswpunct.3, iswspace.3, iswupper.3, iswxdigit.3, malloc.3, mblen.3, mbrlen.3, mbrtowc.3, mbsinit.3, mbsnrtowcs.3, mbsrtowcs.3, mbstowcs.3, mbtowc.3, mkstemp.3, mktemp.3, nl_langinfo.3, openpty.3, posix_openpt.3, printf.3, ptsname.3, putwchar.3, qecvt.3, rcmd.3, readdir.3, rexec.3, rpc.3, setnetgrent.3, shm_open.3, sigpause.3, stdin.3, stpcpy.3, strftime.3, strptime.3, syslog.3, towctrans.3, towlower.3, towupper.3, ttyslot.3, ungetwc.3, unlocked_stdio.3, wcpcpy.3, wcpncpy.3, wcrtomb.3, wcscasecmp.3, wcscat.3, wcschr.3, wcscmp.3, wcscpy.3, wcscspn.3, wcsdup.3, wcslen.3, wcsncasecmp.3, wcsncat.3, wcsncmp.3, wcsncpy.3, wcsnlen.3, wcsnrtombs.3, wcspbrk.3, wcsrchr.3, wcsrtombs.3, wcsspn.3, wcsstr.3, wcstok.3, wcstombs.3, wcswidth.3, wctob.3, wctomb.3, wctrans.3, wctype.3, wcwidth.3, wmemchr.3, wmemcmp.3, wmemcpy.3, wmemmove.3, wmemset.3, wprintf.3, console_ioctl.4, pts.4, elf.5, filesystems.5, hosts.5, proc.5, ttytype.5, boot.7, capabilities.7, credentials.7, epoll.7, glob.7, koi8-r.7, path_resolution.7, pty.7, signal.7, suffixes.7, time.7, unicode.7, unix.7, uri.7, utf-8.7: global fix: s/Unix/UNIX/
The man pages were rather inconsistent in the use of "Unix"
versus "UNIX". Let's go with the trademark usage.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-10-12 04:45:38 +00:00
|
|
|
The prototypes given above follow the Single UNIX Specification,
|
2004-11-03 13:51:07 +00:00
|
|
|
as glibc2 also does; the
|
|
|
|
.I flags
|
2007-06-12 21:19:16 +00:00
|
|
|
argument was \fIint\fP in 4.x BSD, but \fIunsigned int\fP in libc4 and libc5;
|
2004-11-03 13:51:07 +00:00
|
|
|
the
|
|
|
|
.I len
|
2007-06-12 21:19:16 +00:00
|
|
|
argument was \fIint\fP in 4.x BSD and libc4, but \fIsize_t\fP in libc5;
|
2004-11-03 13:51:07 +00:00
|
|
|
the
|
2008-12-03 20:42:47 +00:00
|
|
|
.I addrlen
|
2007-06-12 21:19:16 +00:00
|
|
|
argument was \fIint\fP in 4.x BSD and libc4 and libc5.
|
2004-11-03 13:51:07 +00:00
|
|
|
See also
|
|
|
|
.BR accept (2).
|
2006-03-12 19:09:15 +00:00
|
|
|
|
|
|
|
According to POSIX.1-2001, the
|
|
|
|
.I msg_controllen
|
|
|
|
field of the
|
|
|
|
.I msghdr
|
|
|
|
structure should be typed as
|
|
|
|
.IR socklen_t ,
|
2010-08-29 06:32:22 +00:00
|
|
|
but glibc currently types it as
|
2006-03-12 19:09:15 +00:00
|
|
|
.IR size_t .
|
2006-04-03 01:35:31 +00:00
|
|
|
.\" glibc bug raised 12 Mar 2006
|
2006-03-12 19:09:15 +00:00
|
|
|
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
|
2006-04-03 01:35:31 +00:00
|
|
|
.\" The problem is an underlying kernel issue: the size of the
|
|
|
|
.\" __kernel_size_t type used to type this field varies
|
|
|
|
.\" across architectures, but socklen_t is always 32 bits.
|
2011-09-10 15:43:39 +00:00
|
|
|
|
|
|
|
See
|
|
|
|
.BR sendmmsg(2)
|
|
|
|
for information about a Linux-specific system call
|
|
|
|
that can be used to transmit multiple datagrams in a single call.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH BUGS
|
2007-06-22 18:25:23 +00:00
|
|
|
Linux may return
|
|
|
|
.B EPIPE
|
2007-06-22 19:42:52 +00:00
|
|
|
instead of
|
|
|
|
.BR ENOTCONN .
|
2007-05-28 10:53:03 +00:00
|
|
|
.SH EXAMPLE
|
|
|
|
An example of the use of
|
|
|
|
.BR sendto ()
|
|
|
|
is shown in
|
|
|
|
.BR getaddrinfo (3).
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR fcntl (2),
|
|
|
|
.BR getsockopt (2),
|
|
|
|
.BR recv (2),
|
|
|
|
.BR select (2),
|
|
|
|
.BR sendfile (2),
|
2011-09-10 15:43:39 +00:00
|
|
|
.BR sendmmsg (2),
|
2005-06-30 09:40:35 +00:00
|
|
|
.BR shutdown (2),
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR socket (2),
|
|
|
|
.BR write (2),
|
2005-12-19 09:16:57 +00:00
|
|
|
.BR cmsg (3),
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR ip (7),
|
|
|
|
.BR socket (7),
|
|
|
|
.BR tcp (7),
|
|
|
|
.BR udp (7)
|