天天看点

Unix Network Programming(16)---close 函数

通常Unix close函数也用来关闭套接字,并终止TCP连接。
#include <unistd.h>
int close(int sockfd);   /*返回:若成功则为0,若出错则为-1*/
           

默认行为:close函数把TCP套接字标记成已关闭,然后立即返回到调用进程,该套接字描述符不能再由调用进程使用,也就是说它不能再作为read或write的第一个参数。然而TCP将尝试发送已排队等待发送到对端的任何数据,发送完毕后发生的是正常的TCP连接终止序列。

描述符引用计数

并发服务器中父进程关闭已连接套接字只是导致相应描述符减1。既然引用计数值仍大于0,这个close调用并不引发TCP的四分组连接终止序列。

如果确实想在某个TCP连接上发送一个FIN,那么可以改用shutdown函数以代替close。