09-Man 手册‎ > ‎

9.04. close()

关闭 socket descriptor

函数原型

#include <unistd.h>

 int close(int s);

说明
无论你设计了多棒的机制,在你用完 socket 且不想要 send()  recv() 时,也就是不会再对这个 socket 做任何事情时,你可以将它 close(),而它就会被释放,而且永远不会再用到。


远程可以用两种方法判断对方是否已经关闭 socket,一种是:如远程调用的 recv() 传回 0;另一种是:若远程调用 send() 时收到一个 SIGPIPE 的讯号(signal),且 send() 传回 -1 并将 errno 设置为 EPIPE


Windows 系统的用户:你要用的函数是 closesocket() 而不是 close(),如果你试着使用 close() 关闭 socket descriptor,那么 Windows 系统有可能会震怒 ... 它如果敢生气你就别再爱它了。


返回值
成功时返回零,或者错误时返回 -1(并设定相对应的 errno)。


范例

s = socket(PF_INET, SOCK_DGRAM, 0);

.

.

.

// a whole lotta stuff...*BRRRONNNN!*

.

.

.

close(s); // 没有多少,真的。

参照
socket()shutdown()

 

Comments