HP Rp7410 BSD Sockets Interface Programmer's Guide - Page 47

Closing a Socket

Page 47 highlights

Using Internet Stream Sockets Closing a Socket Closing a Socket In most applications, you do not have to worry about cleaning up your sockets. When you exit your program and your process terminates, the sockets are closed for you. If you need to close a socket while your program is still running, use the close system call. For example, you may have a daemon process that uses fork to create the server process. The daemon process creates the BSD sockets connection and then passes the socket descriptor to the server. You then have more than one process with the same socket descriptor. The daemon process should do a close of the socket descriptor to avoid keeping the socket open once the server is through with it. Because the server performs the work, the daemon does not use the socket after the fork. close decrements the file descriptor reference count. Once this occurs, the calling process can no longer use that file descriptor. When the last close is executed on a socket descriptor, any unsent data are sent before the socket is closed. Any unreceived data are lost. This delay in closing the socket can be controlled by the socket option SO_LINGER. Additional options for closing sockets are discussed in chapter 3, "Advanced Topics for Stream Sockets." For syntax and details on close, refer to the close(2) man page. Chapter 2 47

  • 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

Chapter 2
47
Using Internet Stream Sockets
Closing a Socket
Closing a Socket
In most applications, you do not have to worry about cleaning up your
sockets. When you exit your program and your process terminates, the
sockets are closed for you. If you need to close a socket while your
program is still running, use the
close
system call.
For example, you may have a daemon process that uses
fork
to create
the server process. The daemon process creates the BSD sockets
connection and then passes the socket descriptor to the server. You then
have more than one process with the same socket descriptor. The daemon
process should do a
close
of the socket descriptor to avoid keeping the
socket open once the server is through with it. Because the server
performs the work, the daemon does not use the socket after the
fork
.
close
decrements the file descriptor reference count. Once this occurs,
the calling process can no longer use that file descriptor.
When the last
close
is executed on a socket descriptor, any unsent data
are sent before the socket is closed. Any unreceived data are lost. This
delay in closing the socket can be controlled by the socket option
SO_LINGER. Additional options for closing sockets are discussed in
chapter 3, “Advanced Topics for Stream Sockets.”
For syntax and details on
close
, refer to the
close(2)
man page.