教材内容概述

解决错误检查问题:使用错误处理包装函数

Unix系统中的错误处理

Unix风格的错误处理

fork、wait等的早期函数的返回值既包括错误代码也包括有用的结果

if((pid=wait(NULL))<0)

{

  fprintf(stderr,"wait error: %s\n",strerror(errno));

  exit(0);

}

Posix风格的错误处理

许多较新的Posix函数,只能用返回值来表明成功(0)或失败(非0)。任何有用的结果都返回在通过引用传递进来的函数参数中。

if((retcode=pthread_create(&tid,NULL,thread,NULL))!=0)

{ 

  fprintf(stderr,"pthread_create error: %s\n",

        strerror(retcode));

  exit(0);

}

DNS风格的错误处理

gethostbyname和gethostbyname函数检索DNS(域名系统)主机条目,它们有另外一种返回错误的方法。这些函数在失败时返回NULL指针,并设置全局变量h_errno。

if((p=gethostbyname(name))==NULL)

{

  fprintf(stderr,"gethostbyname error: %s\n:",

         hstrerror(h_errno));

  exit(0);

}

错误处理包装函数

Unix风格的错误处理包装函数

kill函数

void Kill(pid_t pid,int signum)

{

  int tc;

  if((rc=kill(pid,signum))<0)

    unix_error("Kill error");

}

wait函数

pid_t Wait(int *status)

{

  pid_t pid;

  if((pid=wait(status))<0)

    unix_error("Wait error");

  return pid;

}

Poisx风格的错误处理包装函数

void Pthread_detach(pthread_t tid)

{

  int rc;

  if((rc=pthread_detach(tid))!=0)

    posix_error(rc,"Pthread_detach error");

}

DNS风格的错误处理包装函数

struct hostent *Gethostbyname(const char *name)

{

  struct hostent *p;

  if((p=gethostbyname(name))==NULL)

    dns_error("Gethostbyname error");

  return p;

}

转载于:https://www.cnblogs.com/taigenzhenjun/p/6075776.html

20145234黄斐《信息安全系统设计基础》第十周相关推荐

  1. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  2. 20155229 2016-2007-2 《Java程序设计》第一周学习总结

    20155229 2016-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 1~18章的提问: 第一章:怎样撰写Java才不会沦于死背API文件.使用"复制. ...

  3. 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结

    20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...

  4. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结

    20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...

  5. 20175317 《Java程序设计》第一周学习总结

    20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...

  6. 20172318 2016-2017-2 《Java程序设计》第一周学习总结

    20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...

  7. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  8. 20175208 《Java程序设计》第九周学习总结

    20175208 2018-2019-2 <Java程序设计>第九周学习总结 一.教材学习内容总结: 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系 ...

  9. 20175204 张湲祯 2018-2019-2《Java程序设计》第九周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第九周学习总结 教材学习内容总结 -第十一章JDBC和MySQL数据库要点: 1.下载MySQL和客户端管理工具navi ...

  10. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

最新文章

  1. 问题征集 | 跟计算机史学家对谈是一种怎样的感受
  2. 安装深度linux无法引导,安装deepin无法引导,求教!
  3. 记录kafka-flink bug
  4. matlab调用时间序列工具箱,matlab时间序列工具箱
  5. 深度学习(四)卷积神经网络入门学习(1)
  6. windows模拟微信小程序_Windows 版微信新版本内测!小程序可以直接添加到电脑桌面了...
  7. LeetCode 633. Sum of Square Numbers
  8. Java零基础系列003——变量
  9. 非线性数学模型线性化
  10. QQ快速登录实现原理分析之localhost.ptlogin2.qq.com 怎么会映射到 127.0.0.1问题
  11. 国内外 48 个最常用学术网站汇总,这可能是史上最全的!
  12. 电脑网络通过usb分享给手机
  13. 华为b199usb计算机连接,华为B199如何打开USB调试的方法
  14. 六(1) Python之列表
  15. 抽样中误差的相关概念和种类
  16. 蓝牙耳机播放声音前几秒听不到
  17. 设计师应该拥有的 50 个很有用的 CSS 代码
  18. 四轮移动机器人(阿克曼底盘)数学建模
  19. python读取多个txt文件数据恢复_多个文件内容
  20. Endnote 软件中的名词解释

热门文章

  1. 最新手机芯片AI跑分出炉:高通、联发科力压华为
  2. 谷歌有只AI,自动给黑白视频上色,走到哪它都认识你
  3. 加州无人车路测新添Lyft,中国公司Roadstar和长安也要去跑一跑
  4. Linux的常用命令练习
  5. Item-Based Collaborative Recommender System
  6. 华为2017.7.26机试
  7. DNS服务器配置之前传------基础知识普及
  8. 提升SQL Server速度 整理索引碎片
  9. 关于HTML和CSS
  10. configServer的高可用