
unix/linux socket学习日志
cbbbc
这个作者很懒,什么都没留下…
展开
-
signal(SIGCHLD, SIG_IGN)和signal(SIGPIPE, SIG_IGN)
signal(SIGCHLD,SIG_IGN); 因为并发服务器常常fork很多子进程,子进程终结之后需要服务器进程去wait清理资源。如果将此信号的处理方式设为忽略,可让内核把僵尸子进程转交给init进程去处理,省去了大量僵尸进程占用系统资源。(Linux Only) 对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。如果父进程不等待子进程结束,子进程将成为僵尸进程(z转载 2016-11-15 20:55:45 · 600 阅读 · 0 评论 -
signal(SIGPIPE, SIG_IGN)
当服务器close一个连接时,若client端接着发数据。 根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。 若不想客户端退出可以把SIGPIPE设为SIG_I转载 2016-11-15 20:57:50 · 388 阅读 · 0 评论