6.7 其它数据文件
至此我们讨论了两个系统数据文件-口令字文件和组文件。在日常事务操作中,Unix系统还使用很多其它文件。例如,BSD网络软件有一个记录各网络服务器所提供的服务的数据文件(/etc/services),有一个记录协议信息是数据文件(/etc/protocols),还有一个则是记录网络信息的数据文件(/etc.networks)。幸运的是,对于这些数据文件的界面都与上述对口令字文件和组文件的相似。
一般情况下,每个数据文件至少有三个函数:
1) get函数;读下一个记录,如果需要还打开该文件。此种函数通常返回指向一个结构的指针。当已达到文件尾端时返回空指针。大多数get函数返回指向一个静态存储类结构的指针,如果要保存其内容,则需复制它。
2) set函数:打开相应数据文件(如果尚末打开),然后反绕该文件。如果希望在相应文件起始处开始处理,则调用此函数。
3) end函数:关闭相应数据文件。正如前述,在结束了对相应数据文件的读、写操作后,总应调用此函数以关闭所有相关文件。
另外,如果数据文件支持某种形式的关键字搜寻,则也提供搜寻具有指定关键字的记录的例程。例如,对于口令字文件提供了两个按关键字进行搜寻的程序:getpwnam寻找具有指定用户名的记录;getpwuid寻找具有指定用户ID的记录。
存取系统数据文件的一些例程
说明 | 数据文件 | 头文件 | 结构 | 附加的关键字搜索函数 |
口令 | / e t c / p a s s w d | < p w d . h > | p a s s w d | g e t p w n a m , g e t p w u i d |
组 | / e t c / g r o u p | < g r p . h > | g r o u p | g e t g r n a m , g e t g r g i d |
主机 | / e t c / h o s t s | < n e t d b . h > | h o s t e n t | g e t h o s t b y n a m e , g e t h o s t b y a d d r |
网络 | / e t c / n e t w o r k s | < n e t d b . h > | n e t e n t | g e t n e t b y n a m e , g e t n e t b y a d d r |
协议 | / e t c / p r o t o c o l s | < n e t d b . h > | p r o t o e n t | g e t p r o t o b y n a m e , g e t p r o t o b y n u m b e r |
服务 | / e t c / s e r v i c e s | < n e t d b . h > | s e r v e n t | getservbyname, getservbyport |