一、socket 通信客户端断开连接的时候服务端还在write的时候会导致程序崩溃,无任何提示。
二、使用gdb 去运行看详细的log,提示Thread 2 "xxx" received signal SIGPIPE, Broken pipe.如果不是用gdb去运行,是看不到这个关键的log的。
三、解决方案一,close socket前发送stop命令,不再写。
四、解决方案二:在程序中忽略 SIGPIPE
信号,这样程序就不会因为这个信号而崩溃。可以使用 signal
函数来忽略这个信号
五、参考文章: