socket
目录
向关闭的连接读取和写入数据
读取:此时对该socket的读操作将返回0
写入:第一次发送RES复位报文,第二次将触发SIGPIPE信号
SIGPIPE
SIGPIPE是从接收端发送给发送端的信号,默认行为是结束收到信号的进程
- 当客户端向服务端已经关闭的连接中发送数据时,会收到RST,再次发送时则会受到SIGPIPE信号;同理,当服务端向一个意外关闭的客户端发送数据时,也会收到SIGPIPE信号,若不进行特殊处理则会导致服务端关闭
gzip file | grep word | head当此命令中的head列完10行后,会向写端发送SIGPIPE信号,结束掉grep和gzip,而不用完全将文件解压完
listen(int fd, int backlog)的第二个参数
listen的第二个参数指的是完成TCP三次握手但没有被accept的队列。如果系统没有调用accpet把这个队列的数据拿出来,一旦这个队列满了,未连接队列的请求过不来,导致未连接队列里的请求会超时或者拒绝。如果系统调用了accpet队列接受请求数据。那么就会把接受到请求移除已完成队列。 这时候已完成队列又可以使用了。相当于设置一个瞬间能够处理的阈值
最后说了如果开启了syncookies 忽略listen的第二个参数,syncookie 主要是为了防止syn flood攻击。