码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-11-18 00:14:38      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:条目   第十周   sig   函数   wait   概述   返回值   tde   int   

教材内容概述

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

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;

}

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

标签:条目   第十周   sig   函数   wait   概述   返回值   tde   int   

原文地址:http://www.cnblogs.com/taigenzhenjun/p/6075776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!