今天整合代码时候发现,DDNS不断向服务器发出请求的时候,会导致整个进程莫名其妙的退出
后来经过不断的调试发现,是因为对方DDNS服务器已经关闭,而我这边还在send数据,所以导致进程退出
解决办法:
send一个读端已经关闭的管道会产生SIGPIPE信号
SIG_PIPE默认处理是终止程序
只要屏蔽掉这个信号就可以了
if(send(sockfd, msg, msglen, MSG_NOSIGNAL)==-1) //忽略这个SIG_PIPE信号
修改后就好了
今天整合代码时候发现,DDNS不断向服务器发出请求的时候,会导致整个进程莫名其妙的退出
后来经过不断的调试发现,是因为对方DDNS服务器已经关闭,而我这边还在send数据,所以导致进程退出
解决办法:
send一个读端已经关闭的管道会产生SIGPIPE信号
SIG_PIPE默认处理是终止程序
只要屏蔽掉这个信号就可以了
if(send(sockfd, msg, msglen, MSG_NOSIGNAL)==-1) //忽略这个SIG_PIPE信号
修改后就好了