close(clifd);
pthread_exit(NULL);
}
}
执行结果如下:
过程分析,
1. 先执行服务端程序,然后运行客户端程序,客户端程序强制退出(通过快捷键ctrl+c),服务端client_thread中write返回-1,线程正常退出。
2. 这时候服务端程序还阻塞在accpet等待下一次的客户端连接请求,运行新的客户端程序,然后强制退出客户端,发现服务端进程居然直接退出了!
咋办啊!感觉代码没有任何问题了,为啥还会出错,虽然很明确一定是write的时候没能写进客户端导致的进程奔溃,但是却无从下手。
(注意:为了解决这个问题,笔者绞尽脑汁修改,比如添加
shutdown(clifd, SHUT_RDWR);
又或者添加getsockopt来实时获取连接状态
)效果都不佳,无法解决问题。
###3. 添加捕获异常来再次加强容错机制
绞尽脑汁似乎没有什么效果,抓耳挠腮看看吧,好好翻翻书,看看能不能找到灵感。
从网上找到一本和UNIX系统编程有关的书籍《UNIX环境高级编程_第二版中文》,因为android是基于linux开发的 *** 作系统,linux又是从UNIX那边衍射出来的,
所以linux系统编程这块参考这本书特别靠谱。
看到一个和信号有关的章节,确定了要用signal来检测异常,可检测的信号可真多啊!
![](
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享
https://upload-images.jianshu.io/upload_images/15233854-39499870bed5265c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
然后不小心看到这点
好吧,灵感来了,开始写代码,直接添加头文件
include
然后再main函数中添加signal(SIGPIPE, SIG_IGN);
运行服务端,再运行客户端,不管客户端怎么退出重启,服务端都不受影响了。
任务完成!
最后如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
希望读到这的您能转发分享和关注一下我,以后还会更新技术干货,谢谢您的支持!
转发+点赞+关注,第一时间获取最新知识点
Android架构师之路很漫长,一起共勉吧!
以下墙裂推荐阅读!!!
- Android学习笔记参考(敲黑板!!)
- “寒冬未过”,阿里P9架构分享Android必备技术点,让你offer拿到手软!
- 毕业3年,我是如何从年薪10W的拖拽工程师成为30W资深Android开发者!
- 腾讯T3大牛带你了解 2019 Android开发趋势及必备技术点!
- 八年Android开发,从码农到架构师分享我的技术成长之路,共勉!
最后祝大家生活愉快~
最后那我们该怎么做才能做到年薪60万+呢,对于程序员来说,只有不断学习,不断提升自己的实力。我之前有篇文章提到过,感兴趣的可以看看,到底要学习哪些知识才能达到年薪60万+。
通过职友集数据可以查看,以北京 Android 相关岗位为例,其中 【20k-30k】 薪酬的 Android 工程师,占到了整体从业者的 30.8%!
北京 Android 工程师「工资收入水平 」
今天重点内容是怎么去学,怎么提高自己的技术。
1.合理安排时间
2.找对好的系统的学习资料
3.有老师带,可以随时解决问题
4.有明确的学习路线
当然图中有什么需要补充的或者是需要改善的,可以在评论区写下来,一起交流学习。
4.有明确的学习路线
当然图中有什么需要补充的或者是需要改善的,可以在评论区写下来,一起交流学习。
[外链图片转存中…(img-NUAwpRMh-1640923588021)]
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)