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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 通俗讲解 同步、异步、阻塞、非阻塞 编程

    通俗讲解 同步、异步、阻塞、非阻塞 编程#真正意义上的异步IO是说内核直接将数据拷贝至用户态的内存单元,再通知程序直接去读取数据。#select/poll/epoll都是同步IO的多路复用模式1.同步和异步#同步和异步关注的是消息通信机制#所谓同步,就是在发出一个*调用*时,没得到结果之前,该*调用*就不返回。但是一旦调用返回就得到返回值了,*调用者*主动等待这个*调用*的结果#所谓异步,就是在发出一个*调用*时,这个*调用*就直接返回了,不管返回有没有结果。当一个异步过程调用发出后,*被调用者*.

    2022年6月1日
    36
  • 数据绑定中的一个问题”pages enableEventValidation=”true””[通俗易懂]

    数据绑定中的一个问题”pages enableEventValidation=”true””[通俗易懂]我们在用vs2005做数据绑定的时候运行出来的回发或回调参数无效。在配置中使用<pagesenableEventValidation=”true”/>或在页面中使用<%@PageEnableEventValidation=”true”%>启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据…

    2022年7月14日
    36
  • linux审计日志在哪里,linux – 将审计日志发送到SYSLOG服务器

    linux审计日志在哪里,linux – 将审计日志发送到SYSLOG服务器编辑:2014年11月17日这个答案可能仍然有效,但在2014年,usingtheAudispplugin是更好的答案.如果您正在运行stockksyslogdsyslog服务器,我不知道如何执行此操作.但是有很好的指示可以在Wiki上使用rsyslog.(http://wiki.rsyslog.com/index.php/Centralizing_the_audit_log)我将总结一…

    2022年5月7日
    48
  • 【编解码】从零开始写H264解码器(1) 总纲

    【编解码】从零开始写H264解码器(1) 总纲关于编解码的原理的书和文章自己一直在看,从入门到略懂,但是感觉有些零零碎碎,或不完整,似乎串不成体系。有些小功能,知道是知道,并不知道它的意义和作用,时间一长也会慢慢忘记。反思了一下,或许很多东西,还是需要自己动手做一遍,会理解的更深更透彻一些,就像费曼学习法,你能讲出来,才说明懂了,这个也一样,你能把功能实现出来,才说明你真的明白了里面的流程和逻辑。

    2022年6月22日
    62
  • gradle安装教程_安卓gradle安装和使用配置

    gradle安装教程_安卓gradle安装和使用配置1.访问Gradle官网,找到下载页面。http://services.gradle.org/distributions/。gradle-x.x-bin.zip是需要下载的安装发布版。2.解压3.

    2022年8月5日
    18
  • 【2025最新】Idea 2025.1激活教程+一键激活永久使用

    Idea 2025.1激活教程+一键激活永久使用:    1.下载与解压:下载激活包及备用连接,解压压缩包,解压后会生成多个文件夹。 下载地址:关注公众号“全栈程序员社区…

    2025年4月23日
    4.8K

发表回复

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

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