现在的位置: 首页 > 综合 > 正文

Linux环境编程之文件目录

2014年01月28日 ⁄ 综合 ⁄ 共 2904字 ⁄ 字号 评论关闭

    文件IO是主要是对一个文件的操作的基本函数,这篇主要描述文件系统的其他特征和文件的性质。

 

1.stat函数

    stat函数返回一个与此命名文件有关的信息结构, fstat函数获得已在描述符 filedes上打开的文件的有关信息。lstat函数类似于stat,但是当命名的文件是一个符号连接时,lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。

 

三个函数的返回:若成功则为0,若出错则为-1

stat的数据结构如下所示

 

2.access函数

    access按实际用户ID和实际组ID进行文件权限的测试。

返回:若成功则为0,若出错则为-1
参数解析:
      mode值可以是以下几种:
      R_OK   测试读许可权
      W_OK  测试写许可权
      X_OK   测试执行许可权
      F_OK    测试文件是否存在

 

3.truncate函数

truncate 把某个文件截短到一定长度,跟open中的O_TRUNC类似。

成功返回0 ,失败返回-1

 

4.与链接有关的函数

link函数用来创建一个硬链接文件
     int link(const char *existingpath, const char   *newpath);
symlink用来创建一个软链接文件
   int symlink(const char *actualpath, const char   *sympath);
unlink删除软链接时只删除链接文件本身,被连接的文件不受影响。删除硬链接时,如果inode引用数为0,则删除文件。如果有进程还在使用该文件,则可以继续使用。
     int unlink(const char *pathname);
readlink只读取软连接本身
    ssize_t readlink(const char* restrict pathname,   char *restrict buf, size_t bufsize);

 

5.utime函数

utime读取文件的最后访问时间和修改实际那

Inode属性的修改时间有内核来完成,应用程序没有权限去设置。

 

6.目录操作函数

opendir用来打开一个目录 的内容,并返回目录指证。
#include <dirent.h>
DIR *opendir(const char *pathname); 成功返回DIR指针,失败返回NULL

 readdir 以一定次序读取目录内容,
 struct dirent *readdir(DIR *dp);
 struct dirent {
 ino_t d_ino; /* i-node 号 */
 char  d_name[NAME_MAX + 1]; /*文件或目录名*/
 }

 

rewinddir 重置目录的输入流,重置后从第一个目录项开始读。
void rewinddir(DIR *dp);

telldir 返回目录流的当前位置
long telldir(DIR *dp);

seekdir  设置目录流位置。
void seekdir(DIR *dp, long loc);
loc有telldir返回

closedir  关闭目录流

int closedir(DIR *dp);

 

下面的例子是递归遍历一个目录,打印出这个目录下所有的文件和目录,并且需要打印出这些文件的类型(比如 链接文件,普通文件等)。

抱歉!评论已关闭.