博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20145234黄斐《信息安全系统设计基础》第十周
阅读量:7131 次
发布时间:2019-06-28

本文共 1261 字,大约阅读时间需要 4 分钟。

教材内容概述

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

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

你可能感兴趣的文章
GeoServer地图开发解决方案(五):基于Silverlight技术的地图客户端实现
查看>>
Android应用程序键盘(Keyboard)消息处理机制分析(3)
查看>>
Linux上连接Microsoft SQL Server 2005
查看>>
私有云管理-Windows Azure Pack
查看>>
Linux下文件和目录的颜色代表的含义
查看>>
Forefront Client Security服务器部署
查看>>
Crystal Reports中的字段
查看>>
一个例子探究jQuery的Ajax应用(二)
查看>>
PPT of "SharePoint 2007 网站性能优化"
查看>>
爪哇国新游记之三十四----Dom4j的XPath操作
查看>>
node17
查看>>
Java程序性能优化4
查看>>
第一次负责项目总结
查看>>
Azure Redis Cache (2) 创建和使用Azure Redis Cache
查看>>
python统计ES存储空间占用的代码
查看>>
成就连自己都惊讶的未来
查看>>
依赖倒置(DIP)与依赖注入(DI)
查看>>
mysql数据库授权
查看>>
Microstation
查看>>
深入浅出的英语口语700句zz
查看>>