SIGPIPE信号问题

SIGPIPE信号问题
socket编程问题
SIGPIPE信号问题=========================
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。
   根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGP

大家好,又见面了,我是你们的朋友全栈君。

socket编程问题

SIGPIPE信号问题=========================

当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。
    根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设为SIG_IGN

    如:    signal(SIGPIPE,SIG_IGN);
    这时SIGPIPE交给了系统处理。

  服务器采用了fork的话,要收集垃圾进程,防止僵尸进程的产生,可以这样处理:
  signal(SIGCHLD,SIG_IGN); 交给系统init去回收。
   这里子进程就不会产生僵尸进程了。

另一种处理:SIGPIPE信号的处理
 
signal(SIGPIPE, handle_omsignal);

void handle_omsignal(
        int number)
{

    switch (number)
    {

        default:
        {

            break;
        }
        case SIGPIPE:
        {

            om_alog(error, “omagentd”, “%s”,”Network error!”);
            break;
        }
    }
}

当然若client 端并没有连接到server,是不会发生这种情况的。

=================================================

进程和线程

:线程是进程的一条执行流程,多个线程在进程的资源平台上运行。进程死,则线程必死。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139389.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VIM 查找 返回结果个数[通俗易懂]

    VIM 查找 返回结果个数[通俗易懂]:%s/xxx//gn关键是最后的n,代表只报告匹配的个数,而不进行实际的替换。

    2022年6月22日
    77
  • Linux系统开启IPv6任播(anycast)地址[通俗易懂]

    Linux系统开启IPv6任播(anycast)地址[通俗易懂]这两年真是在linux上各种掏捡,各种零碎。。。无力吐槽了。。。下面简单记录一下开启任播地址我的系统是Debian7.21、开启IPv6转发sudoecho1>/proc/sys/net/ipv6/conf/all/forwarding2、完了系统会自动生成IPv6任播地址cat/proc/net/anycast6此时你在网卡上新配置一个IPv6地址,就会在/proc/net/anycast6下生成一个对应的任播地址。在另一台主机上你可以ping6一下其中一个任.

    2022年5月23日
    54
  • linux内核版本和发行版本的区别_linux内核版本号的构成

    linux内核版本和发行版本的区别_linux内核版本号的构成Linux的内核版本和发行版本1.内核版本内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。例如,程序本身不需要了解用户的主板芯片集或磁盘控制器的细节就能在高层次上读写磁盘。内核的开发和规范一直是由Linus领导的开发小组控制着,版本也是惟一的。开发小组每隔一段时间公布新的版本或其修订版,从1991年10月Linus向世界…

    2022年8月23日
    10
  • Python 创建加密压缩文件「建议收藏」

    Python 创建加密压缩文件「建议收藏」Python创建加密压缩文件1.配置ZLibhttp://www.winimage.com/zLibDll/minizip.html下载之后将zlibwapi.dll放在demo/目录下,与minizip.exe一起使用2.命令行使用minizip.exe>minizip.exeMiniZip1.01b,demoofzLib…

    2022年5月18日
    40
  • Android Studio 安装配置教程 – Windows(详细版)

    Android Studio 安装配置教程 – Windows(详细版)准备工作Java环境变量配置好,参考:Java环境变量配置然后首先是安装程序,这里默认不翻墙,使用国内的,:AndroidStudio下载地址,最新版本目前是3.5.2,由于我之前已经下载过了3.5.0了,所以我就不需要再下载3.5.2了,安装双击运行点击Next下一步点击Next下一步默认会给你转到C盘,这里我修改到了G盘(PS:这里一定要改路径,否则随着你开…

    2022年7月15日
    28
  • Redis雪崩效应的解决方案(转)[通俗易懂]

    Redis雪崩效应的解决方案(转)[通俗易懂]1、可以使用分布式锁单机版的话本地锁当突然有大量请求到数据库服务器时候,进行请求限制。使用所的机制,保证只有一个线程(请求)操作。否则进行排队等待(集群分布式锁,单机本地锁)。减少服务器吞吐量,效率低。保证只能有一个线程进入实际上只能有一个请求在执行查询操作也可以在此处进行使用限流的策略~2、缓存标记publicobjectGetProductListNew()…

    2025年11月15日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号