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. JZOJ5821手机信号

    用set维护,(l,r,v),注意边界,保证了两个端点l,r一定有信号站 增加有三种可能,1.直接加(没有影响),2.将原本的一个区间变成两个 3.将原本的一个区间变成三个 删除有三种情况,1.全包含 ...

  2. PKU 2411 Mondriaan's Dream 状态DP

    以前做过这题,今天又写了一次,突然发现写了一个好漂亮的DFS……(是不是太自恋了 - -#) 代码: #include <cstdio> #include <cstring> ...

  3. 三:redis的List类型相关操作

    </pre><pre name="code" class="php" style="font-size: 14px;"&g ...

  4. 基于ArcGIS Flex API实现动态标绘(1.2)

    动态标绘API 1.2,相较前一版本号(点击进入),该版本号新增对基本标绘符号的支持,包含: 单点.多点.折线.手绘线.多边形.手绘多边形.矩形,并提供对应的编辑功能. 例如以下图所看到的,对多点的编 ...

  5. Linux 下UVC&amp;V4L2技术简单介绍(二)

    通过前文Linux 下UVC&V4L2技术简单介绍(一)我们了解了UVC和V4L2的简单知识. 这里是USB设备的文档描写叙述:http://www.usb.org/developers/do ...

  6. vue12 循环添加重复数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. NET Remoting原理及应用

    .NET Remoting原理及应用实例: Remoting:(本文摘自百度百科) 简介:        什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方 式.从微软的产品角度来看 ...

  8. Html+CSS基础之CSS样式

    认识CSS样式 CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式,如文字大小.颜色.字体加粗等. 如下列代码: p{ fo ...

  9. 8种提升 ASP.NET Web API 性能的方法

  10. SCOPE_IDENTITY()和 SELECT @@IDENTITY 的用法

    这俩个,是在插入数据的时候使用,返回刚刚插入数据行的ID 大家慎用@@IDENTITY,而尽量采用 SCOPE_IDENTITY() 函数替换之. SCOPE_IDENTITY()  也是得到最后一条 ...