首页 > 其他 > 详细

Summary Day32

时间:2015-06-09 06:14:31      阅读:181      评论:0      收藏:0      [点我收藏+]

1 . 文件管理

1.1 标C文件处理和UC文件处理函数的比较:

标C文件处理函数比UC的文件处理函数速度快,因为标C内部独立输入输出缓冲区,

会积累一定数量之后再写入文件,因此读写效率比较高

使用time命令可以获取进程的运行时间

time b.out

real  0m0.081s  =>真实时间

user  => 用户态时间

sys => 内核时间


1.2 文件描述符:

进程 =》 文件描述符表=》文件表=》V字节(包含I字节)

文件描述符就是一个整数,可以代表打开的文件,但是文件的信息不是存在文件描述符中,而是存在文件表等结果中

当打开一个文件时,系统会把文件的信息存入文件表等结构中,但是处于安全的考虑,文件表等结构并不是直接操作,而

是给文件表对应一个编号,拿着编号进行操作,而编号就叫做文件描述符

在进程的内部维护一张文件描述符的总表,当使用open函数打开文件时,就会加载该文件的信息到内存中,然后去文件描述符

总表查找一个最小的未被使用的描述符建立和文件表对应的关系,而文件描述符是非负整数

close函数不会改变文件描述符的整数值,只是会让描述符无法代表一个文件


1.3 dup/dup2函数

#include <unistd.h>

int dup(int oldfd);

函数功能: 主要用于根据参数指定的描述符进行复制,成功返回新的描述符,失败返回-1

int dup2(int oldfd, int newfd);

函数功能:主要用于将oldfd参数指定的文件表地址拷贝到newfd中,如果newfd占用,则考虑强制关闭,

成功则返回文件描述符,失败返回-1


1.4 fcntl函数

#include <unistd.h>

#include <fcntl.h>

int fcntl(int fd, int cmd, ..../*arg*/);

第一个参数:文件描述符(对哪个文件操作)

第二个参数:命令/操作(执行什么样的操作)

F_DUPFD

F_GETFD/F_SETFD

F_SETFL/F_SETGL

F_SETLK/F_SETLKW/F_GETLK

第三个参数:可变长参数

函数功能:

(1)主要用于复制文件描述符

(2)设置、获取文件描述符的功能

(3)设置获取文件状态标志的功能

(4)主要勇于实现建议文件锁的功能


1.5 使用fcntl实现文件锁的功能

(1)文件锁的作用

当有多个进程同时对一个共享文件进行读写操作时,可能会造成数据混乱和不一致性,理论上应该要求多个进程对文件

操作进行串行而不是并行,如果两个进程都是读文件则允许同时进行,只要有一个写操作,则另外一个进程应该等待,为

了实现该功能,需要借助文件锁来实现

(2)实现文件锁的功能,

fnctl函数的第三个参数值: 结构体指针

结构体:  struct flock

Summary Day32

原文:http://blog.csdn.net/c764785456/article/details/46419975

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!