既然发生错误时终止程序的运行是普遍的情况,我们可以通过定义 包裹函数 来缩短程序。每个包裹函数完成实际的函数调用,检查返回值,并在发生错误时终止进程。
我们约定包裹函数名是实际函数名的首字母大写形式。
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;
}