关闭套接字前终止连接

3
当进程向套接字写入数据时,内核会首先将这些数据存储在内部缓冲区中,然后再将其推送出去。现在,如果进程在关闭套接字之前终止(但缓冲区中仍有数据),内核不会费心将它们刷新出去。
那么我的问题是:
当进程关闭套接字并立即终止时,我们是否处于可能丢失缓冲区中数据的情况下?内核是否会在调用关闭套接字时立即刷新缓冲区?
1个回答

1

来自 close函数的手册页

如果fildes指向一个套接字,close()将导致该套接字被销毁。如果套接字处于连接模式,并且SO_LINGER选项已设置为非零逗留时间,则close()将阻塞最多当前逗留间隔时间,直到所有数据都传输完毕。


太棒了!谢谢!说实话,我没想到这种解释会在manpages里面出现...我的错。 - Kam
1
POSIX 参考文档:http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html @Kam - alk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接