Chinaunix首页 | 论坛 | 博客
  • 博客访问: 307482
  • 博文数量: 214
  • 博客积分: 4258
  • 博客等级: 上校
  • 技术积分: 2021
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-02 09:16
个人简介

http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net

文章分类

全部博文(214)

文章存档

2018年(16)

2015年(1)

2014年(2)

2012年(22)

2011年(173)

分类: LINUX

2011-09-18 15:47:46

5.8 Posix信号处理

  信号是发生某事件时对进程的通知,有时称为软中断。

  进程可以:

1)由一进程发往另一进程(或本身);

2)由内核发往某进程。

5.13 SIGPIPE信号

当一个进程向接收了RST的套接口进行写操作时,内核给该进程发一个SIGPIPE信号。该信号的缺省行为就是终止进程,所以,进程必须捕获它以免不情愿地被终止。

进程无论是捕获了该信号并从其信号处理程序返回,还是不理会该信号,写操作都返回EPIPE错误。

处理SIGPIPE的建议方法取决于它发生时应用程序想做什么。如果没有特殊的事情需做,则将信号处理办法简单地设置为SIG_IGN,并假设后续的输出操作将捕获EPIPE错误并终止。如果信号出现时需采取特殊措施,那么就必须捕获该信号,以免在信号处理程序中执行所有期望的动作。但必须意识到,如果使用了多个套接口,该信号的递交无法告诉我们是那个套接口出的错。如果我们需要知道是哪个write出了错,那么必须不理会该信号,要么从信号处理程序返回后再处理来自writeEPIPE

5.16 服务器主机关机

  Unix系统关机时,一般是由init进程给所有进程发信号SIGTERM(我们可捕获此信号),等待一段固定时间(常常是5-20秒),然后给还在运行的所有进程发信号SIGKILL(此信号我们不嫩捕获)。我们必须在客户上使用函数selectpoll,使得客户在服务器进程开始终止时就检测到。

5.18 数据格式

有两个常用方法来解决数据格式问题:

1)把所有的数值数据作为文本串来传递,当然这也要以两个主机由相同的字符集为基础;

2)显式定义所支持数据类型的二进制格式(位数,大端或小端),在客户与服务器之间以此格式传递所有数据。远程过程调用软件包常用此技术。

阅读(166) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~