对方没有close就cancel了socket pair,你就会收到一个sig_pipe信号然后strerror会显示“connection reset by peer”的错误。防止程序退出解决方法就是处理SIGPIPE信号
屏蔽信号的代码
void InstalSignal()
{
signal(SIGHUP ,SIG_IGN ); /* hangup, generated when terminal disconnects */
signal(SIGINT ,SIG_IGN ); /* interrupt, generated from terminal special char */
signal(SIGQUIT ,SIG_IGN ); /* (*) quit, generated from terminal special char */
signal(SIGILL ,SIG_IGN ); /* (*) illegal instruction (not reset when caught)*/
signal(SIGTRAP ,SIG_IGN ); /* (*) trace trap (not reset when caught) */
signal(SIGABRT ,SIG_IGN ); /* (*) abort process */
#ifdef D_AIX
signal(SIGEMT ,SIG_IGN ); /* EMT intruction */
#endif
signal(SIGFPE ,SIG_IGN ); /* (*) floating point exception */
signal(SIGKILL ,SIG_IGN ); /* kill (cannot be caught or ignored) */
signal(SIGBUS ,SIG_IGN ); /* (*) bus error (specification exception) */
signal(SIGSEGV ,SIG_IGN ); /* (*) segmentation violation */
signal(SIGSYS ,SIG_IGN ); /* (*) bad argument to system call */
signal(SIGPIPE ,SIG_IGN ); /* write on a pipe with no one to read it */
signal(SIGALRM ,SIG_IGN ); /* alarm clock timeout */
//signal(SIGTERM ,stopproc ); /* software termination signal */
signal(SIGURG ,SIG_IGN ); /* (+) urgent contition on I/O channel */
signal(SIGSTOP ,SIG_IGN ); /* (@) stop (cannot be caught or ignored) */
signal(SIGTSTP ,SIG_IGN ); /* (@) interactive stop */
signal(SIGCONT ,SIG_IGN ); /* (!) continue (cannot be caught or ignored) */
signal(SIGCHLD ,SIG_IGN); /* (+) sent to parent on child stop or exit */
signal(SIGTTIN ,SIG_IGN); /* (@) background read attempted from control terminal*/
signal(SIGTTOU ,SIG_IGN); /* (@) background write attempted to control terminal */
signal(SIGIO ,SIG_IGN); /* (+) I/O possible, or completed */
signal(SIGXCPU ,SIG_IGN); /* cpu time limit exceeded (see setrlimit()) */
signal(SIGXFSZ ,SIG_IGN); /* file size limit exceeded (see setrlimit()) */
#ifdef D_AIX
signal(SIGMSG ,SIG_IGN); /* input data is in the ring buffer */
#endif
signal(SIGWINCH,SIG_IGN); /* (+) window size changed */
signal(SIGPWR ,SIG_IGN); /* (+) power-fail restart */
//signal(SIGUSR1 ,stopproc); /* user defined signal 1 */
//signal(SIGUSR2 ,stopproc); /* user defined signal 2 */
signal(SIGPROF ,SIG_IGN); /* profiling time alarm (see setitimer) */
#ifdef D_AIX
signal(SIGDANGER,SIG_IGN); /* system crash imminent; free up some page space */
#endif
signal(SIGVTALRM,SIG_IGN); /* virtual time alarm (see setitimer) */
#ifdef D_AIX
signal(SIGMIGRATE,SIG_IGN); /* migrate process */
signal(SIGPRE ,SIG_IGN); /* programming exception */
signal(SIGVIRT ,SIG_IGN); /* AIX virtual time alarm */
signal(SIGALRM1,SIG_IGN); /* m:n condition variables - RESERVED - DON 'T USE */
signal(SIGWAITING,SIG_IGN); /* m:n scheduling - RESERVED - DON 'T USE */
signal(SIGCPUFAIL ,SIG_IGN); /* Predictive De-configuration of Processors - */
signal(SIGKAP,SIG_IGN); /* keep alive poll from native keyboard */
signal(SIGRETRACT,SIG_IGN); /* monitor mode should be relinguished */
signal(SIGSOUND ,SIG_IGN); /* sound control has completed */
signal(SIGSAK ,SIG_IGN); /* secure attention key */
#endif
}
分享到:
相关推荐
linux iptables防火墙黑名单(封IP) Connection reset by peer
如果用户在服务器仍在发送数据时关闭了浏览器,服务器无法接收到客户端的确认,可能会导致"Connection Reset by Peer"错误。在这种情况下,服务器端可以通过增加异常处理,比如使用`try...catch`结构来捕获并处理...
* Connection reset by peer:Connection reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器端之间的连接断开后,导致连接的一端继续发送数据,引发该异常。 实践经验 通过实践经验,我们可以...
然而,在处理网络连接时,有时会遇到错误提示"CURL ERROR: Recv failure: Connection reset by peer"。这个错误通常意味着在数据传输过程中,服务器或客户端意外地断开了连接,导致通信失败。以下是针对该问题的详细...
解决oracle数据库发生'Connection reset by peer' or 'Connection reset'的错误 这边的数据库连接是kettle自带的h2数据库,只要有kettle就有这个数据库,目录位于data-integration\samples\db\,连接方式是 ...
read tcp 192.168.31.60:55550->104.18.123.25:443: read: connection reset by peer 传输异常 然后看见网上说可以配置阿里云提供的镜像加速 具体方式 进入阿里云的容器镜像服务 快速链接: 容器镜像服务 复制加速...
ECONNRESET错误表示"connection reset by peer",即对方(通常是服务器)主动关闭了连接。这可能是因为服务进程在客户端之前结束,导致服务器发送一个FIN包来结束连接。如果客户端此时尝试再次发送数据,服务器会...
根据给定的文件信息,我们可以总结出以下关于SQL数据库连接(Connection)的相关知识点: ### SQL数据库连接...在实际开发中,通常还会使用异常处理机制来捕获并处理可能出现的运行时错误,确保程序的健壮性。
例如,如果服务器端关闭了连接,而客户端还在尝试发送数据,那么客户端会收到"Connection reset by peer"的错误信息。 2. **未关闭的连接导致异常**:另一种情况是一端程序退出,但未正确关闭Socket连接。当另一端...
此资源为深信服外置短信中心接口,可使用官方的工具smsservice工具,但短信猫放在其它位置通过网络使用外部接口时,频繁出现连接不稳定,[SMS_SP]readn failed: Connection reset by peer,此时主要原因在连接配置上...
XXL-JOB是一个分布式任务调度平台,其设计思想是将调度行为抽象成一个独立的“调度中心”,这个中心不承担具体的业务逻辑,而是负责发起调度请求。任务则被抽象为分散的`JobHandler`,由“执行器”来统一管理和执行...
主要语言:Rust 项目分类:[工具] [应用软件] 项目标签:[桌面应用] 推荐理由:一款免费远程桌面软件,支持多平台,包括Linux、Mac、Windows和Android。它以开箱即用的方式提供远程桌面功能,无需任何复杂的配置。...
有关详细说明,请参考 。 在本地重现此问题的步骤: 设定环境 npm install 启动服务器 npm start 在单独的终端中运行测试客户端 npm run client ... 因为从上游的角度来看,连接已关闭,所以它为此请求发送了一个[RST...
这个项目可能分为两部分:一部分是实现Modbus TCP客户端的类,另一部分是实现Modbus TCP服务器的类。客户端类可能包含连接到服务器、发送请求和解析响应的方法;服务器类则可能包括启动监听、接收连接、处理请求和...
Fixes flakiness of adb shell port forwarding that leads to "Connection reset by peer" error message. Fixes authentication via ADB_VENDOR_KEYS when reconnecting devices. Fixes authentication—when the ...
Fixes flakiness of adb shell port forwarding that leads to "Connection reset by peer" error message. Fixes authentication via ADB_VENDOR_KEYS when reconnecting devices. Fixes authentication—when the ...
这可能是由于多种原因,如网络问题、服务器配置错误、SSL问题、URL错误等。 #### 检查cURL错误 当出现bool(false)的返回值时,应使用curl_error()函数来获取详细的错误信息,帮助开发者定位问题。 ```php var_dump...