和文件 IO 中有 lseek 函数类似,C库函数中提供了 fseek 、ftell 和 rewind 三个函数来对流进行定位操作。 函数原型: 函数参数: stream:要操作的文件流指针 offset:相对于参数 whence 的偏移量 whence:参考点 返回值: 调用成功时返回 0 调用失 ...
分类:
其他好文 时间:
2016-10-01 12:42:08
阅读次数:
163
在使用write函数向文件中写入数据的时候,并不是在调用了函数后数据就被写进了磁盘,操作系统在内核中设置了一块专门的缓冲区,数据会先被写入到内核的缓冲区中,等到缓冲区满了或者系统需要重新利用缓冲区的时候才会将此缓冲区排入到写队列中去,待到达队首的时候,将数据真正写入到磁盘当中。这就是延迟写,延迟写会 ...
分类:
其他好文 时间:
2016-10-01 12:41:08
阅读次数:
136
open函数用来在进程中打开文件,如果成功则返回一个文件描述符fd。 函数原型: 函数参数: pathname:打开文件的路径名 flags:用来控制打开文件的模式 mode:用来设置创建文件的权限(rwx)。当flags中带有O_CREAT时才有效。 返回值: pathname:打开文件的路径名 ...
分类:
其他好文 时间:
2016-10-01 12:41:04
阅读次数:
155
1、文件描述符和inode号码是不同的两个东西。 1、文件描述符和inode号码是不同的两个东西。 2、对于每个进程,系统会建立一个进程控制块(PCB)来保存相关的信息,而这个PCB在内核中的表现其实就是一个称为task_struct的结构体,这个结构体的成员用来保存与此进程有关的相关信息,其中有个 ...
分类:
其他好文 时间:
2016-10-01 12:37:01
阅读次数:
357
原子操作是指在一个进程中不允许被其他进程打断的操作就是原子操作。 在“文件共享”笔记中提到了单进程和多进程之间的文件共享,当同时对共享的文件进行写操作的时候,由于各自有独立的当前文件偏移量,所以很可能会出现数据覆盖的问题,正如该笔记中举的例子一样。为了解决数据覆盖的这个问题,就需要每次写之前将当前文 ...
分类:
其他好文 时间:
2016-10-01 12:35:54
阅读次数:
182
fcntl函数是用来在进程中实现对文件的多种操作的函数,通过不同的命令可以实现不同的操作。常用的操作有复制文件描述符、为文件设置建议锁和获取设置文件控制标志等。 函数原型: 操作一:复制文件描述符实现文件共享 函数参数: fd:要操作的文件描述符 cmd:F_DUPFD arg:文件描述符 返回值: ...
分类:
其他好文 时间:
2016-10-01 12:35:41
阅读次数:
187
在同一个进程中,实现文件共享的方法有两种: 多次使用open函数打开相同文件 使用dup/dup2函数或者fcntl函数 多次使用open函数打开相同文件 使用dup/dup2函数或者fcntl函数 对于第一种方法: 每次使用open函数打开文件时,操作系统内核中都会创建一个不同的文件表项(stru ...
分类:
系统相关 时间:
2016-10-01 12:35:15
阅读次数:
196
这里只介绍几种常用的格式化 IO 函数,这些函数如下所示: fprintf:将内容按照指定格式写入到文件当中 sprintf:将内容按照指定格式写入到内存当中 snprintf:相比于 sprintf 函数来说,就是增加了 字符数 的限制 vfprintf:相比于 fprintf 函数而言,只是将变 ...
分类:
其他好文 时间:
2016-10-01 12:32:51
阅读次数:
120
read函数用来在进程中读取某文件中的内容。 函数原型: 函数参数: fd:要读取的文件描述符 buf:保存从文件中读取到的内容的内存首地址 count:希望从文件读取到字节数 返回值: fd:要读取的文件描述符 buf:保存从文件中读取到的内容的内存首地址 count:希望从文件读取到字节数 返回 ...
分类:
其他好文 时间:
2016-10-01 12:30:56
阅读次数:
150
close函数用来在进程中关闭文件。当使用close关闭文件时,加在该文件上的所有的建议锁都将会被释放。内核中的文件表项也将会被释放。 函数原型: 函数参数: fd:要关闭文件的文件描述符 返回值: fd:要关闭文件的文件描述符 返回值: 调用成功返回 0 调用失败返回 -1,并修改errno的值 ...
分类:
其他好文 时间:
2016-10-01 12:27:10
阅读次数:
149