`
chriszeng87
  • 浏览: 713849 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

signal(SIGCHLD, SIG_IGN)和signal(SIGPIPE, SIG_IGN);

阅读更多
当服务器close一个连接时,若client端接着发数据。根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 
  根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设为SIG_IGN 
  如:    signal(SIGPIPE,SIG_IGN); 
  这时SIGPIPE交给了系统处理。 
  服务器采用了fork的话,要收集垃圾进程,防止僵尸进程的产生,可以这样处理: 
  signal(SIGCHLD,SIG_IGN); 交给系统init去回收。 
  这里子进程就不会产生僵尸进程了
 
分享到:
评论

相关推荐

    socket 聊天源码

    signal(SIGCHLD,SIG_IGN); while(1){ char ch; printf("server waiting"); client_len=sizeof(client_address); client_sockfd=accept(server_sockfd,(struct sockaddr *)&client;_address,(socklen_t *)&...

    Android Init进程对信号的处理流程详细介绍

    如果父进程没有做这种处理,且父进程初始化时也没有调用signal(SIGCHLD, SIG_IGN)来显示忽略对SIGCHLD的处理,这时子进程将一直保持当前的退出状态,不会完全退出。这样的子进程不能被调度,所做的只是在进程列表中...

    NDK20_线程轮询实现双进程守护

    在Linux系统下,如果使用sigaction将信号SIGCHLD的sa_flags中的SA_NOCLDSTOP选项打开,当子进程停止(STOP作业控制)时, 不产生此信号(即SIGCHLD)。不过,当子进程终止时,仍旧产生此信号(即SIGCHLD)。 3....

    一个进程池的服务器程序

    signal(SIGCHLD, SIG_IGN); len200 = strlen(head200); len404 = strlen(head404); len503 = strlen(head503); daemon_init(); //转为后台程序,如需打印调试,把这行注释掉 if (write_pid() ) //避免同时...

    Linux C 一站式学习

    4.5. sig_atomic_t类型与volatile限定符 4.6. 竞态条件与sigsuspend函数 4.7. 关于SIGCHLD信号 34. 终端、作业控制与守护进程 1. 终端 1.1. 终端的基本概念 1.2. 终端登录过程 1.3. 网络登录过程 2. 作业控制 2.1. ...

    PHP实现的多进程控制demo示例

    分享给大家供大家参考,具体如下: ...pcntl_signal(SIGCHLD, sigHandler, false); echo this is . posix_getpid() . PHP_EOL; for($i=0; $i<3; $i++) { $pid = pcntl_fork(); if($pid == -1) { echo '

    UNIX Network Programming Volume 1, Third Edition (Unix网络编程卷1第3版英文版)

    SIGPIPE Signal Section 5.14. Crashing of Server Host Section 5.15. Crashing and Rebooting of Server Host Section 5.16. Shutdown of Server Host Section 5.17. Summary of TCP Example Section ...

    C/C++头文件一览

    C/C++头文件一览,这个文件是从这个站点下载的!不过那里要1分!最痛恨要资源分的人了!所以下载下来在上传上来,给各位免费下载!

    linux net socket 编程示例

    LINUX SOCKET编程通信小例子,入门级。试过可以运行。

    Linux函数和脚本

    13.13 SIGPIPE 14.14 SIGALRM 15.15 SIGTERM 16.17 SIGCHLD 17.18 SIGCONT 18.19 SIGSTOP 19.20 SIGTSTP 20.21 SIGTTIN 21.22 SIGTTOU 22.23 SIGURG 23.24 SIGXCPU 24.25 SIGXFSZ 25.26 SIGVTALRM 26.27 SIGPROF 27....

    宋劲彬的嵌入式C语言一站式编程

    4.5. sig_atomic_t类型与volatile限定符 4.6. 竞态条件与sigsuspend函数 4.7. 关于SIGCHLD信号 34. 终端、作业控制与守护进程 1. 终端 1.1. 终端的基本概念 1.2. 终端登录过程 1.3. 网络登录过程 2. 作业控制 2.1. ...

    linux信号量说明

    1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD18) SIGCONT ...

    linux网络编程

    IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06...

    C++教程网《Linux网络编程》视频百度云地址

    网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06...

    2018年C++教程网的linux网络编程视频共41集百度云下载链接.rar

    网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06socket编程...

    Linux网络编程 视频 教程

    网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06...

    C++教程网视频:linux网络编程

    网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06...

    c++教程网的linux网络编程视频下载

    网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06...

    [免费]2018年C++教程网的linux网络编程视频百度云下载链接.rar

    网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06...

Global site tag (gtag.js) - Google Analytics