linux网络编程学习笔记之二 -----错误异常处理和各种碎碎(更新中)

errno

在unix系统中对大部分系统调用非正常返回时,通常返回值为-1,并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen()。erron存放一个正整数来保存上次出错的错误值。

对线程而言,每个线程都有专用的errno变量,不必考虑同步问题。

strerror converts to English (Note: use strerror_r for thread safety)

perror is simplified strerror/fprintf


慢系统调用

指可能永远阻塞而无法返回的系统调用,通常是一些读写的例子,如pipe,终端设备,网络连接,典型的accept(), read(), write(), open(),select(),epoll()等。适用于慢系统调用的基本规则是:当阻塞于某个慢系统调用的进程捕获到某个信号且相应的信号处理函数返回时,系统调用可能会返回一个EINTR错误,即将errno的值置为该值。虽然有些内核会对该系统调用重启,但从可移植性的角度说,对EINTR处理是必须的。注意对connect()不能如此处理。(UNP 5.9)


一个信号被信号处理函数响应,在处理过程中,该信号被屏蔽。标准的信号实现没有排队的功能,所以信号可能会被丢失,多个连续的信号来不及处理。用waidpid()枚举检查不失为一种好的解决方法,见UNP 5.10


关于TOE&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值