linux文件操作
千叶why
一天天的生活,一点改变,一点向前
展开
-
read/write函数
read函数1.函数原型#includesize_t read(int fd, void* but, size_t nbytes);返回值:成功返回读到的字节数,如果在文件末尾返回0,失败返回-1.2.如果读到字节数少于需求的字节数的情况1.当读入普通文件的时候,如果在读取出要求的字节数之前到达了文件的末尾。比如:文件里面还有30个字节没有读区,但是我们要求读100原创 2017-02-27 13:58:46 · 433 阅读 · 0 评论 -
文件共享
UNIX系统支持在不同进程之间共享打开文件。下面是关于内核对于所有I/O使用的数据类型1.文件共享简介内核使用三种数据类型来表示打开文件,并且它们之间的关系决定了一个进程在文件共享方面对于另一个进程的影响。1.每一个进程都有一个进程表的入口。在进程表入口里面又一个打开文件的描述符表,文件描述符表里面是所有的文件描述符。和文件描述符相关的是:a.文件描述符标志(the file原创 2017-02-28 14:57:31 · 343 阅读 · 0 评论 -
sync,fsync,fdatasync函数
1.写时延迟通常unix系统有buffer cache或者page cache在kernel里面,通过这些磁盘I/O来进行工作。当我们写数据到文件时,数据通常被内核拷贝到cache里面以待以后写到磁盘。这被称为写时延迟。内核最终都会讲写时延迟的数据块写到磁盘中,通常当它需要重新使用buffer的来写到磁盘时。为了保证文件系统和cache内容在磁盘上的一致性,从而有了sync fsy原创 2017-03-03 15:39:05 · 409 阅读 · 0 评论 -
lseek函数
1.函数原型off_t lseek(int fd, off_t offset, int whence);成功返回文件当前偏移量,失败返回-1。每一个文件都有一个相关的当前文件偏移量,通常是一个从文件起始位置计算得到的非负整数。读和写操作都是从文件当前偏移量开始的,并且是文件当前偏移量增加相应的读和写的字节(byte)。一般当文件打开的时候文件偏移量初始化为0,除非O_APPEN原创 2017-02-23 14:49:15 · 709 阅读 · 0 评论 -
文件I/O
1.文件I/O简介 文件I/O是非缓冲I/O,这意味着我们read/write的时候将会调用系统函数。非缓冲I/O的函数属于POSIX1规范和the Single UNIX Specification,但是不属于ISO C规范。 大多数的文件操作都可以通过5个函数来实现:open,read,write,lseek,close。2.标准I/O的文件描述符POSIX原创 2017-02-15 19:05:29 · 283 阅读 · 0 评论 -
fcntl函数
1.函数原型#includeint fcntl(int fd, int cmd, .../*int arg*/);返回值:成功依赖于cmd,失败返回-1.该函数能够改变已经打开文件的属性。2.cmd相关的介绍第三个参数通常是根据cmd而来的一个整数。但是后面当我们讨论记录锁的时候,第三个参数时一个指向结构体的指针。fcntl函数有五种作用。1.复制一个存在的原创 2017-03-06 09:07:11 · 370 阅读 · 0 评论 -
文件类型、文件用户ID组ID、文件访问许可
1.文件类型1.文件类型分类a.普通文件:最常见的文件类型,该类文件中包含一个类型的数据。对于UNIX内核来说数据是文本还是二进制文件并没有区别。 所有的普通文件内容的解释都留给应用程序去操作这个文件。一个最大的例外是二进制可执行文件。为了执行一个程序,内核必须知道它的类型。所有的二进制可执行文件遵从一个形式允许 内核识别去哪里装在程序的文本和数据。b.目录:包含其它原创 2017-03-08 14:59:53 · 1595 阅读 · 0 评论 -
link,linkat,unlink,unlinkat,remove函数
1.link,linkat函数1.1函数原型#include int link(const char* existingpath, const char* newpath);int linkat(int efd, const char* existingpath, int nfd, const char* newpath,int flag);成功返回0,失败返回-1.1.2原创 2017-03-22 12:26:58 · 2138 阅读 · 1 评论 -
futimens,utimensat,utimes函数
1.futimens,utimensat函数原型#includeint futimens(int fd, const struct timespec times[2]);int utimensat(int fd, const char* path, const struct time spec times[2], int flag);成功返回0,失败返回-1.2.futimen原创 2017-03-23 17:31:46 · 1970 阅读 · 0 评论