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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20145234黄斐《信息安全系统设计基础》第十周相关的知识,希望对你有一定的参考价值。

教材内容概述

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

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黄斐《信息安全系统设计基础》第十周的主要内容,如果未能解决你的问题,请参考以下文章

20145234黄斐《信息安全系统设计基础》第十二周学习总结

20145234黄斐《信息安全系统设计基础》第十一周学习总结

20145234黄斐《信息安全系统设计基础》第十三周学习总结

20145234黄斐《Java程序设计》第十周

20145234黄斐《信息安全系统设计基础》第七周(Linux命令复习)

20145234黄斐《信息安全系统设计基础》期中总结