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的更多相关文章

  1. Summary of Critical and Exploitable iOS Vulnerabilities in 2016

    Summary of Critical and Exploitable iOS Vulnerabilities in 2016 Author:Min (Spark) Zheng, Cererdlong ...

  2. 三个不常用的HTML元素:<details>、<summary>、<dialog>

    前面的话 HTML5不仅新增了语义型区块级元素及表单类元素,也新增了一些其他的功能性元素,这些元素由于浏览器支持等各种原因,并没有被广泛使用 文档描述 <details>主要用于描述文档或 ...

  3. [LeetCode] Summary Ranges 总结区间

    Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...

  4. Network Basic Commands Summary

    Network Basic Commands Summary set or modify hostname a)     temporary ways hostname NEW_HOSTNAME, b ...

  5. Summary - SNMP Tutorial

    30.13 Summary Network management protocols allow a manager to monitor and control routers and hosts. ...

  6. Mac Brew Install Nginx Summary

    ==> Downloading https://homebrew.bintray.com/bottles/nginx-1.10.1.el_capitan.bot################# ...

  7. Leetcode: LFU Cache && Summary of various Sets: HashSet, TreeSet, LinkedHashSet

    Design and implement a data structure for Least Frequently Used (LFU) cache. It should support the f ...

  8. How to add taxonomy element to a summary view?

    [re: Orchard CMS] This caused me scratching my head for days and now I can even feel it's bleeding. ...

  9. (转) Summary of NIPS 2016

    转自:http://blog.evjang.com/2017/01/nips2016.html           Eric Jang Technology, A.I., Careers       ...

随机推荐

  1. easyui-combobox实现取值范围的联动

    需求:需要用两个combobox来输入一个年月的范围,下拉框的内容从服务器获取.需要实现选中前者后,后者的下拉框中不能显示比前者数值小的:选中后者后,前者的下拉框内容不能显示比后者数值大的 有两个co ...

  2. ssh 免交互式登陆

    脚本: vim key.sh #!/bin/bash#make key\rm -f /root/.ssh/id_dsassh-keygen -t dsa -f /root/.ssh/id_dsa -P ...

  3. python描述符和属性查找

    python描述符 定义 一般说来,描述符是一种访问对象属性时候的绑定行为,如果这个对象属性定义了__get__(),__set__(), and __delete__()一种或者几种,那么就称之为描 ...

  4. [JLOI2011]飞行路线(分层图)

    [JLOI2011]飞行路线 题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在 n 个城市设有业务,设这些城市分别标记为 0 到 n−1 ,一共有 m ...

  5. 一个最不可思议的MySQL死锁分析

    1    死锁问题背景    1 1.1    一个不可思议的死锁    1 1.1.1    初步分析    3 1.2    如何阅读死锁日志    3 2    死锁原因深入剖析    4 2. ...

  6. ArcGIS api for javascript——地理处理任务-瓶中信

    描述 如果在海洋中丢下一个瓶子,本例使用颗粒追踪模型显示指定的天数后瓶子在的地方.首先,输入一个追踪瓶子的天数.然后单击按钮并在海洋里的任意地方画一个点来开始模型.几秒以后将看到一条线出现描述瓶子将去 ...

  7. 局部特化 & 特化

    注意,显式特化不是一个模板.如果是类型跟显式特化一样,那么不是实例化. 显式特化类的函数,不需要再加template,因为不是模板方法. 特化类的函数跟模板类不一定要一样,但是一样更好. 不支持局部特 ...

  8. php中局部变量和全局变量

    php中局部变量和全局变量 代码1:函数内部使用函数外部变量错误方法 <?php $name = 'fish'; function animal() { echo $name; } animal ...

  9. node --- 服务一直启动

    使用node xxx.js命令可以开始在服务器运行node.js程序. 可是它会占用终端的当前进程,而且当你离开服务器连接的时候(e.g.关闭终端或者Putty) node.js程序也会退出. 如何让 ...

  10. SQL 2008 还原 SQL2005 备份文件 不成功的解决方法

    解决方法1:不要在数据库名字上点右键选择还原,而要是在根目录“数据库”三个字上点右键选择还原,然后再选择数据库,问题便可以解决,如果不行参照方法2 解决方法2:写sql语句处理: RESTORE DA ...