SHUTDOWN [ Berkeley Sockets/iX Reference Manual ] MPE/iX 5.0 Documentation
Berkeley Sockets/iX Reference Manual
SHUTDOWN
C Interface
shutdown(s, how)
int s, how;
Description
The shutdown system call is used to shut down a socket. The s parameter
is the socket descriptor of the socket to be shut down. In the case of a
full-duplex connection, shutdown can be used to either partially or fully
shut down the socket, depending on the value of how.
If how=0, the socket can still send data, but it cannot receive data.
Remaining data can be sent and new data can be sent; however, all further
recv() calls return an end-of-file condition.
If how=1, further sends by the user will return an EPIPE error. A
SIGPIPE signal will be sent to the user unless the user has used ioctl()
to ignore the signal. Note that data already queued by a previous send
call will still be sent.
If how=2, a socket cannot send remaining or new data or receive data.
This is the same as doing a shutdown of 0 and a shutdown of 1
simultaneously.
Once the socket has been shut down for receives, all further recv calls
return an end-of-file condition.
A shutdown on a connection-less socket, such as SOCK_DGRAM, only marks
the socket unable to do further sends or receives, depending on how.
Once this type of socket has been disabled for both sending and receiving
data, it becomes fully shut down.
For SOCK_STREAM sockets, if how is 1 or 2, the connection begins a
graceful disconnect. The disconnection is complete when both sides of
the connection have done a shutdown with how equal to 1 or 2. Once the
connection has been completely terminated, the socket becomes fully shut
down.
Note the difference between the close and shutdown calls. Close makes
the socket descriptor invalid while shutdown is used to partially or
fully shutdown the I/O on the socket. The user can call close after a
shutdown to make the socket descriptor unusable. The SO_LINGER option
does not have any meaning for the shutdown call, but does for the close
call. (Refer to setsockopt.)
Return Value
If the call is successful, a 0 is returned. If it fails, a -1 is
returned, and an error code is stored in errno.
Errors
The following errors are returned by shutdown:
[EBADF] The argument s is not a valid descriptor.
[ENOTSOCK] The argument s is a file, not a socket.
[EINVAL] The specified socket is not connected.
Author
UCB (University of California at Berkeley)
See Also
close, connect, socket
MPE/iX 5.0 Documentation