unix高级编程21.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:7 大小:308KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

unix高级编程21.pdf

unix高级编程21.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

下载下载附录B其他源代码B.1头文件正文中的大多数程序都包含头文件hr.dhruo,这示于程序1-B中。其中定义了常数(例如MAXLINENILXAM)和我们自编函数的原型。因为大多数程序序包含下列头文件:>h.oidts<>h.bi、ldts<(其中有tixe函数原型),以及<unistd.h>h.dtsinu<(其中包含所有标准XINU函数的原型),所以hr.dhruo包含了这些系统头文件,同时还包含了>h.gnirts<。这样就减少了本书正文中所有程序的长度。程序B-1头文件hr.dhruo附录B其他源代码315下载51415XINU环境高级编程下载程序中先包括一般系统头文件,然后再包括hr.dhruo,这样就能解决某些系统之间的差别(例如4.3BSDReno中没有定义RRE_GIS),并且也可定义一些我们的函数原型,而这些仅当包括一般系统头文件之后才是需要的。当在原型中引用未定义的结构时,某些ANSIC编译程序会认为不正常。B.2标准出错处理例程我们提供了两个出错处理例程,它们可用于本书中大多数实例以处理各种出错情况。一个例程以_rre开头,并向标准出错文件输出一条出错消息。另一个例程以_gol开头,用于精灵进程(见第31章),它们多半没有控制终端。提供了这些出错处理函数后,只要在程序中写一行代码就可以进行出错处理,例如:if(出错条件)err_dump(pmud_rre带任意参数的ftnirp格式;)这样也就不再需要使用下列代码:if(出错条件){chara;h]c002[ffubsprintf(buff,带任意参数的ftnirp格式;)perror(buff);)ffub(rorrepabort();}我们的出错处理函数使用了ANSIC的变长参数表功能。其详细说明见nahginreKei和hctiR〔8991〕的3.7节。应当注意的是这一ANSIC功能与早期系统(例如3RVSD和SB3.4)提供的varargsrgarav功能不同。宏的名字相同,但更改了某些宏的参数。表1-B列出了各个出错处理函数之间的区别。表B-1标准出错处理函数函数?)onrre(rorrerts终止?Err_reter_rrE是;nruterErr_sysys_rrE是;)1(tixeErr_dumpmud_rrE是abort();Err_msgsm_rrE否;nruterErr_quitiuq_rrE否exit(1);Log_reter_goL是;nruterLog_sysys_goL是;)2(tixeLog_msgsm_goL否;nruterLog_quitiuq_goL否;)2(tixe程序2-B包括了输出至标准出错文件的各个出错处理函数。程序B-2输出至标准出错文件的出错处理函数附录B其他源代码515下载51615XINU环境高级编程下载程序3-B包括了各XX_Xgol出错处理函数。若进程不以精灵进程方式进行,那么调用者应当定义变量gubed,并将其设置为非0值。在这种情况下,出错消息被送至标准出错文件。若debugubed标志为0,则使用golsys设施(见2.4.31节)。程序B-3用于精灵进程的处理函数附录B其他源代码715下载