高级编程之目录(二)

来源:互联网 发布:有利网 骗局知乎 编辑:程序博客网 时间:2024/05/22 12:22

目 录 操 作

 

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

   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

 

 

 

0 0
原创粉丝点击