博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十四篇:获取系统数据文件信息
阅读量:6155 次
发布时间:2019-06-21

本文共 1269 字,大约阅读时间需要 4 分钟。

前言

       在 Linux 中,系统数据文件大都不能直接用编辑的方式读取。如此设计一方面是从安全性考虑,另一方面则是从文件检索效率考虑。

       本文将以口令文件 passwd 为例讲解读取 Linux 中系统数据文件的方法。

基本步骤

       1. 包含读写该系统数据文件的专用头文件 ( 如读写口令文件要包含 pwd.h 组文件则是 grp.h )

       2. 使用 set 函数打开文件

       3. 使用 get 函数读取下一个记录

       4. 使用 end 函数关闭此文件

       另,如果数据文件支持某种形式的关键字搜索,则会提供搜索具有指定关键字记录的例程。如口令文件提供了 getpwnam 函数寻找具有指定用户名的记录;getpwuid 函数寻找具有指定用户ID的记录。

       几个主要系统数据文件的例程信息可参考下表:

       

代码实现

       下程序打印口令文件中的所有用户名:

1 #include 
2 #include
3 #include
4 5 int main (void) { 6 // 打开口令文件 7 setpwent(); 8 9 // 设立指向口令结构体的指针10 struct passwd *p = NULL;11 12 // 遍历口令文件13 while (p = getpwent()) {14 printf ("%s, ", p->pw_name);15 }16 printf("\n");17 18 // 关闭口令文件19 endpwent();20 21 return 0;22 }

       附 passwd 结构体:

1 struct passwd 2 { 3     char * pw_name; /* Username, POSIX.1 */ 4     char * pw_passwd; /* Password */ 5     __uid_t pw_uid; /* User ID, POSIX.1 */ 6     __gid_t pw_gid; /* Group ID, POSIX.1 */ 7     char * pw_gecos; /* Real Name or Comment field */ 8     char * pw_dir; /* Home directory, POSIX.1 */ 9     char * pw_shell; /* Shell Program, POSIX.1 */10     char *pw_class;11     time_t pw_change;12     time_t pw_expire;13 };

运行测试

       

小结

       1. 除了顺序遍历的方法读取系统数据文件( 如本文程序 ),还可以根据某些字段信息检索文件。

       2. 注意到,程序并没有指定口令文件的路径。

转载地址:http://rxifa.baihongyu.com/

你可能感兴趣的文章
汉字转拼音 (转)
查看>>
会计基础_001
查看>>
小程序: 查看正在写的页面
查看>>
Jenkins持续集成环境部署
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>