当进程写入套接字时,内核会先将该数据存储在内部缓冲区中,然后再推送它。现在,如果进程在缓冲区中仍然存在数据的情况下终止(在关闭套接字之前),则内核不会将它们清除掉。
所以我的问题是:
当进程关闭套接字然后立即死亡时,我们是否会在缓冲区中丢失数据?当调用close套接字时,内核是否立即刷新缓冲区?
答案 0 :(得分:1)
如果
fildes
引用套接字,close()
将导致套接字被破坏。如果套接字处于连接模式,并且为具有非零延迟时间的套接字设置了SO_LINGER
选项,并且套接字具有未传输的数据,那么close()
将阻止最多为当前的逗留间隔,直到所有数据都被传输。