网络编程第五章:服务器意外崩溃

服务器意外杀死子进程,客户再次访问的时候,会收到一个FIN,但是如果客户这时阻塞在某个功能上的时候,这个功能会意外终止.

问题在于,服务器意外杀死子进程,但是客户并不能及时收到FIN或者reset,导致客户等待,只有客户再次访问,才会发现服务器已经崩溃了.

sigpipe信号:

如果客户不理会这意外终止的功能,而向服务器发送更多的信息,会发生什么?

如果这个功能是写,那么内核会向这个进程发送一个SIGPIPE信号,也就是终止进程.所以进程必须捕获这个信号,以免被不情愿的终止.

服务器崩溃后重启:
假设客户在重启之前没有向服务器发送信息,也就不知道服务器崩溃,那么在重启后,服务器将对这些客户的tcp分节发送reset,因为服务器丢失了链接信息.

所以客户知道服务器是否崩溃很重要.

服务器关机:
关机的时候,Unix会给所有进程发送sigterm,然后隔一段时间发送sigkill,如果不能捕获sigterm,那么就会被sigkill杀死.
必须在客户使用poll或者select函数,使得客户知道服务器的终止.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值