您的位置:首页 > 编程语言

高级编程之目录(二)

2016-01-22 14:00 176 查看
目 录 操 作

打开目录 ===》遍历目录 ===》切换目录 ===》关闭目录

opendir() ===>readdir()/chdir() ====>closedir()

头文件:

#include <sys/types.h>

#include <dirent.h>

#include <unistd.h>

原型:DIR *opendir(const char *name);

功能: 从指定的name路径+目录名下打开该目录

参数: name 要打开的目录所在路径+目录名称

返回值:成功 目录流对象,DIR * 结构体指针

失败 NULL

原型:struct dirent *readdir(DIR *dirp);

功能:从已经打开的目录流对象drip中获取一个文件信息。

参数:dirp 已经打开的流对象

返回值: 成功 返回一个文 件结构体,重点是d_name 成员变量,表示文件名称。

失败或者目录流结尾 NULL

原型:int chdir(const char *path);

功能:将程序的执行目录修改为指定的path路径

参数:path 新的工作目录

返回值:成功 0

失败 -1

原型:int closedir(DIR *dirp);

功能:关闭指定的目录流对象

参数:dirp 要关闭的流对象

返回值: 成功 0

失败 -1;

注意:closedir 不能关闭多次,否则段错误。

2、文件属性操作 ===>stat 命令对应的 函数

头文件

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

原型:int stat(const char *path, struct stat *buf);

功能:从指定的path路径+文件名称获取文件属性信息到buf对象中。

参数:path 要打开的文件路径+名称

buf 文件属性结构体

返回值:成功 0

失败 -1;

注意:如果要获取链接文件的属性信息用 lstat函数

如果文件已经被open函数打开,可用fstat函数获取其信息。

文件类型:

普通文件 -

目录文件 d

链接文件 l /dev/stdin

字符设备文件 c /dev/tty

块设备文件 b /dev/sda

套接子文件 s /dev/log

管道文件 p

用户信息获取:/etc/passwd =>id == name

1、getpwuid() ===>函数得到如下信息:

头文件: pwd.h

函数: getpwuid()

结构体: struct passwd *

2 用户组信息

struct group *getgrgid(gid_t gid);

文件的大小:

buf.st_size

3、时间函数 ===> time() localtime() asctime()

头文件:

#include <time.h>

原型:time_t time(time_t *t);

功能:获取当前系统时间与格林尼治时间之间的秒数。

参数:t 要获取的时间结构体,如果是NULL 则表示默认当前时间。

如果是变量则在变量中存储秒数。

返回值:如果参数是NULL ,则用该返回值表示获取的秒数/

如果参数不是NULL,则一般用参数获取秒数/

原型:struct tm *localtime(const time_t *timep);

功能:将指定的timep秒数的数据值转换成struct tm 类型的时间结构体。

参数:timep 之前通过time函数或已知的时间秒数。

返回值:成功 时间结构体

失败 NULL

原型:char *asctime(const struct tm *tm);

功能:将指定的时间结构体直接转换成时间字符串。

参数: tm 经过localtime 函数转换的结构

返回值:成功 最终地时间结构体

失败 NULL

练习: 综合以上知识点,完成如下功能:

设计一个程序,可以通过住函数传参的方式打印输出该文件的

所有属性信息,如果该文件是目录则输出目录中包含的文件属性信息。

比如:

./a.out abc ===>普通文件abc的属性信息输出

./a.out ./ ===>当前目录的所有文件属性信息遍历输出。

4、IO 总结

源码方式安装软件:

1、下载源码包 xxx.tar xxx.tar.gz

2、解压缩 tar -xvf xxx.tar tar -zxvf xxx.tar.gz

3、切换目录 cd xxxx

4、配置环境 ./configure

5、生成可执行程序 make

6、安装 make install

ctags 的使用:

1、进入系统目录 cd /usr/include

2、生成tags文件 ctags -R *

3、在当前目录中追查变量或者结构体

vi -t xxx

4、 如果定位的结果已经显示的是基本数据类型,则表示追踪截至。

如果第一次没有定位到变量的基本数据类型,则用ctrl+] 向下追查

要求光标必须在要追查的类型的原始定义处。

如果要向后回退则用ctrl+t 回退一次。

5、用 :q 退出vi
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: