文件和目录

    目录的入口形式

         头文件<dirent.h>定义了一个结构和目录程序用到的类型,没有确定的文件内部格式

         Readdir()返回了一个指针指向一个类型对象 struct dirent

    目录操作

#include <sys/types.h>
#include <dirent.h>

//根据 dirname 打开一个目录流
dir *opendir(const char *dirname);

//返回一个指针,它指向一个目录流中当前位置的目录入口
//目录流由 dirp 指向
struct dirent *readdir(dir *dirp);

//重置目录流的位置到目录的起点
void rewinddir(dir *dirp);

//关闭目录流,成功: 返回0
int closedir(dir *dirp);

  工作目录

       改变当前的工作目录

//使命名的目录成为当前的工作目录
//path:指向目录的路径名
int chdir(const char *path);

     获得工作目录路径名

//复制当前工作目录的绝对路径名到 buf 所指向的队列中
char *getcwd(char *buf, size_t size);

基本文件的创建

    打开一个文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

//文件和文件描述符之间建立了一个连接,它创建了一个指向一个文件的打开文件描述
//path: 指向文件的路径名
int open(const char *path, int oflag, ...);

    创建一个新文件或者重写一个已经存在的文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

//creat = open(path,o_wronly|o_creat|o_trunc,mode) 
int creat(const char *path, mode_t mode);

     设置文件的创建标记

#include <sys/types.h>
#include <sys/stat.h>

//设置进程的文件模式创建标记到 cmask,并返回原来的标记值
mode_t umask(mode_t cmask);

   连接到一个文件

/*
 *existing: 指向路径名来命名存在文件
 *new: 指向一个路径名,它命名了一个创建的新的目录入口
 *已存在的文件自动的创建一个新的连接,并将文件连接数加 1
 */
int link(const char *exising, const char *new);

特殊文件创建

      生成一个目录

#include <sys/types.h>
#include <sys/stat.h>

//path: 创建一个新的目录
//新目录的允许位根据 mode 初始化
int mkdir(const char *path, mode_t mode);

   创建一个 FIFO 类型的文件

#include <sys/types.h>
#include <sys/stat.h>

//创建一个新的 fifo 类型文件,它由 path 指向的路径名命名
int mkfifo(const char *path, mode_t mode);

文件的移动

   移动目录入口

//移去由 path 指向得路径名所命名得连接, 并将连接数减去 1
int unlink(const char *path);

   移去一个目录

int rmdir(const char *path);

  重命名一个文件

/*改变一个文件的名字
 * old: 指向被重命名文件的路径名
 * new: 指向文件的新路径名
 */
int rename(const char *old, const char *new);