unix环境高级编程附录其他源代码_第1页
unix环境高级编程附录其他源代码_第2页
unix环境高级编程附录其他源代码_第3页
unix环境高级编程附录其他源代码_第4页
unix环境高级编程附录其他源代码_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、附录B其他源代码B.1头文件正文中的大多数程序都包含头文件 ourhdr.h,这示于程序B-1中。其中定义了常数(例如 MAXLINE)和我们自编函数的原型。因为大多数程序序包含下列头文件: 、(其中有exit函数原型),以及(其中包含所有标准UNIX函数的原型),所以ourhdr.h包含了这些系统头文件,同时还包含了。这样就减少了本书正文中所有程序的长度。程序B-1 头文件ourhdr.h附录B 其他源代码513514UNIX环境高级编程程序中先包括一般系统头文件,然后再包括ourhdr h,这样就能解决某些系统之间的差别(例如 4.3BSD Reno中没有定义SIG_ERR),并且也可定义

2、一些我们的函数原型,而这些仅当包括一般系统头文件之后才是需要的。当在原型中引用未定义的结构时,某些 ANSI C编译程序会认为不正常。B.2标准出错处理例程我们提供了两个出错处理例程,它们可用于本书中大多数实例以处理各种出错情况。一个例程以err_开头,并向标准出错文件输出一条出错消息。另一个例程以 log_开头,用于精灵进程(见第13章),它们多半没有控制终端。提供了这些出错处理函数后,只要在程序中写一行代码就可以进行出错处理,例如i f (出错条件 )e r r _ d u m p带(任意参数的 p rf格式) ;这样也就不再需要使用下列代码:i f (出错条件 ) c h a rb u

3、f f 2 0 0 ;s p rf ( bu f f , 带任意参数的p r p e r r o r ( b u f f ) ;a bo r t () ;f格式) ;我们的出错处理函数使用了ANSI C的变长参数表功能。其详细说明见Kernighan和Ritchie1998的7.3节。应当注意的是这一 ANSI C功能与早期系统(例如 SVR3和4.3BSD)提供的 varargs功能不同。宏的名字相同,但更改了某些宏的参数。表B-1列出了各个出错处理函数之间的区别。表B-1 标准出错处理函数程序B-2包括了输出至标准出错文件的各个出错处理函数。程序B-2 输出至标准出错文件的出错处理函数函数

4、s t r e r r o r ( e r r n o ) ?终止?E r r _ r e t是r e t u r n ;E r r _ s y s是e x i t ( 1 ) ;E r r _ d u m p是a b o r t ( ) ;E r r _ m s g否r e t u r n ;E r r _ q u i t否e x i t( 1 ) ;L o g _ r e t是r e t u r n ;L o g _ s y s是e x i t ( 2 ) ;L o g _ m s g否r e t u r n ;L o g _ q u i t否e x i t ( 2 ) ;附录B 其他源代码515516UNIX环境高级编程程序B-3包括了各log_出错处理函数。若进程不以精灵进程方式进行,那么调用者应当定义变量debug,并将其设置为非 0值。在这种情况下,出错消息被送至标准出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论