错误处理:包裹函数

既然发生错误时终止程序的运行是普遍的情况,我们可以通过定义 包裹函数 来缩短程序。每个包裹函数完成实际的函数调用,检查返回值,并在发生错误时终止进程。

我们约定包裹函数名是实际函数名的首字母大写形式。

void Pthread_mutex_lock(pthread_mutex_t *mptr)

{

  int n;

  n = pthread_mutex_lock(mptr);

  if(0 == n)

  {

    return;

  }

  errno =  n;

  err_sys("pthread_mutex_lock error");

}

只要一个unix函数中有错误发生,函数本身通常返回-1,全局变量errno就被置为一个指明该错误类型的正值。

int main()
{
  int i_r;

  i_r = open("./a",  O_RDWR);//打开一个不存在的文件

  printf("i_r = %d\n",  i_r);

  printf("errno = %d\n",  errno);

  printf("%s\n",  strerror(errno));

  return 0;
}

原文地址:https://www.cnblogs.com/zhangxuan/p/4730167.html