编写socket程序要注意的问题

本文探讨了在网络编程中进程管理的重要性,包括如何处理被中断的系统调用、僵死进程及信号处理等关键问题。此外,还讨论了服务器与客户端在不同情况下的交互行为,例如服务器终止时的处理方式、服务器主机崩溃后的处理机制等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,正常终止情况下

1,认清被中断的系统调用,并正确处理它们。
2,在编写并发程序时,记得处理好僵死进程。(可对SIGCHLD信号进行处理)
3,wait函数不能正确处理多个子进程同时终止的情况,因为当多个SIGCHLD信号同时到达时,wait只能处理一个,这时可使用waitpid函数,如下指定WNOHANG参数,使waitpid不阻塞

二,accept返回前连接终止

三,服务器进程终止
服务器终止时,发送FIN,而客户端接收FIN,返回ACK,这时客户端可以再写数据到服务器,而服务器返回RST,这时如果客户端再次写数据到服务器端,将导致引发SIGPIPE信号

四,服务器主机崩溃
当服务器主机崩溃时,它并不发送任何东西,客户端只有在重传失败后才能知晓服务器崩溃,这需要很长的时间

五,服务器崩溃后重启

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值