加载中…
正文 字体大小:

笔记-记录自己学到的关于文件的API

(2014-07-19 10:42:21)
标签:

it

   这个星期开始看apue,看到了第三和第四章,都是关于文件有关的知识,这里小结一下学到了api,以后要用了回头一看。
    api主要分为两类,一类是关于文件I/O操作的函数,还有一类是关于文件信息操作的函数。
   一、 I/O操作的函数:
    1.打开或者创建文件:
    #include
    int open(const char *path, int flag, ...);
    int openat(int fd, const char *path, int oflag,  ...);

   2.创建一个新文件(非目录):
   #include
   int creat(const cha
r *path, mode_t mode);

  3.关闭一个打开的文件
  #include
  int close(int fd);

  4.为一个打开文件显示设置偏移量
  #include
  off_t lseek(int fd, off_t offset, int whence);

  5.一个打开文件中读数据
  #include
  ssize_t read(int fd, void *buf, size_t nbytes);

  6.打开文件里写数据
  #include
  ssize_t write(int fd, const void *buf, size_t nbytes);

 7.复制 一个现有的文件描述符
 #include
 int dup(int fd);
 int dup2(int fd, int fd2);

 8.与系统延迟写有关的
 #include
 int fsync(in fd);
 int fdatasync(int fd);
 void sync(void);

 9.改变打开文件的属性
 #include
 int fnctl.(int fd, int cmd, ...);

 10.I/O操作的杂物箱
 #include
 int ioctl(int fd, int request, ...);

二、与文件信息和目录有关的函数
 1.获得命名文件有关的信息结构
 #include
 int stat(const char *restrict pathname , strcut stat * restrict buf);
 int fstat(int fd,  struct stat *buf);
 int  lstat(const char *restrict pathname, struct stat *restrict buf);
 int  fstatat(int fd, const char *restrict pathname, strcut stat *restrict buf, int flag);

2. 按实际用户ID和实际组ID进行访问权限测试
 #include
 int access(const char *pathname, int mode);
 int faccessat(int fd, const char *pathname, int mode, inf flag);

 3.为进程设置文件模式创建屏蔽字
 #include
 mode_t umask(mode_t cmask);

 4.更改现有文件的访问权限
 #include
 int chmod (const char  *pathname, mdoe_t mode);
 int fchmod(int fd, mode_t mode);
 int fchomdat(int fd, const char *pathname, mode_t mode, int flag);

 5.更改文件的用户ID和组ID
  #include
 int chown(const char *pathname, uid_t owner, gid_t group);
 int fchown(int fd, uid_t owner, gid_t group);
 int fchownat(int fd, const char *pathname, uid_t owner, gid_t group, int flag);
 int lchown(const char *pathname, uid_t owner, gid_t group);

 6.截断文件长度
 #include
 int truncate(const char *pathname, off_t length);
 int ftruncate(int fd, off_t length);

7.创建一个指向现有文件的链接
 #include
int link(const char *existingpath, const char * newpath);
int linkat(int efd, const char  *existingpathint nfd, const char *newpathint flag);

 8.删除目录项,并将由pathname所引用文件的链接计数减1
 #include
 int unlink(const char *pathname);
 int unlinkat(int fd, const char *pathname, int flag);

 #include
 int remove(const char *pathname);

9.对文件和目录进行重命名
#include
int rename(const char *oldname, const char *newname);
int renameat(int oldfd, const char  *oldname, const char *newname);

10.创建和读取符号链接
#include
int symlink(const char *actualpath, const char *sympath);
int symlinkat(const char *actualpath, int fd, const char *sympath);

11.更改文件的访问和修改时间
#include
int futimens(int fd, const struct timespec time[2);
int utimesat(int fd, const char *path, const strcut timespec time[2], int flag);

12.创建目录
#include
int mkdir(const char *pathname, mode_t mode);
int mkdirat(int fd, const char *pathname, mode_t mode);

13.删除一个空目录
#include
int rmdir(const char *pathname);

14.打开目录
#include
DIR *opendir(const char *pathname);
DIR *fdopendir(int fd);

15.读目录
#include 
struct dirent *readdir(DIR * dp);

16.设置参数dir目录流目前的读取位置为原来开头的读取位置
#include 
void rewinddir(DIR *dp);

17.读取与参数dp关联的目录中的当前位置
#include 
long telldir(DIR *dp);

18.设置参数dp关联的目录中当前的读取位置
#include 
void seekdir(DIR *dp, long loc);

19.关闭一个打开的目录
#include 
int closedir(DIR *dp);

20.更改当前工作目录
#include
int chdir(const char *pathname);
int  fchdir(int fd);

22.得到当前工作目录完整的绝对路径
#include
char *getcwd(char *buf, size_t size);

23.读链接文件的名字
#include \
ssize_t readlink (const char *restrict pathname, char *restrict buf, size_t bufsize);
ssize_t readlinkat(int fd, const char *restrict pathname, char *restrict buf, size_t bufsize);

绿色--符号链接文件有关
紫色-路径设置有关

0

阅读 评论 收藏 转载 喜欢 打印举报
前一篇:小结啊小结
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    < 前一篇小结啊小结
      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有