加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

低级输入输出

发布时间:2020-12-15 23:12:28 所属栏目:安全 来源:网络整理
导读:低级输入输出 标准I/O函数提供了丰富便捷的输入输出函数,但有时并不需要标准I/O函数提供的数据转换和缓冲处理,某些特殊操作需要UNIX的输入输出系统调用,这些系统调用习惯上成为低级I/O函数。(我觉得理解为底层I/O函数更贴切) 低级I/O函数对文件描述字进

低级输入输出

标准I/O函数提供了丰富便捷的输入输出函数,但有时并不需要标准I/O函数提供的数据转换和缓冲处理,某些特殊操作需要UNIX的输入输出系统调用,这些系统调用习惯上成为低级I/O函数。(我觉得理解为底层I/O函数更贴切)

低级I/O函数对文件描述字进行操作,其中有些函数是实现标准I/O函数的初等函数,另外一些执行低级控制操作。

文件描述字的打开、创建和关闭

打开创建

open()、create()用于打开或创建一个文件描述字


参数flags给出文件的打开方式,mode是可选参数,给出文件的访问方式。

参数flags说明:

open()返回的文件描述字是唯一的,不为由正在运行的其他进程所共享。若两个进程同时打开一个文件,系统保证它们有各自的文件描述字。如果两进程都写这个文件,它们将按自己的文件位置来写,写入的数据不会交错的记录在文件内
而是一个被另一个覆盖。 为避免覆盖,可以利用文件锁来协调。

fd=craete(filename)

等价于

fd=open(filename,O_WRONLY|O-CREATE|O_TRUNC,mode);

函数close用于关闭已打开的文件描述字

关闭文件描述字意味下面一系列动作:

  • 释放描述字fledes,此描述字可被后继的open()再次使用;
  • 释放进程在此文件上战友的所有文件锁;
  • 当与管道或IFIO相连的所有文件描述字均被关闭时,废弃任何还在管道或IFIO上的数据。

进程终止时也会自动关闭该进程打开的所有文件,因此可利用该特征而不明显的调用close()关闭文件。

类似标准流,每个进程预先打开三个文件描述字:0、1、2,分别打开标准输入、标准输出、标准错误输出。符号常数STDIN_FILENO、STDOUT_FILENO和STDERROR_FILENO分别表示这三个文件描述字。

内核为管理文件的打开和关闭使用三种数据结构

  • 每个活跃进程在系统的进程表中有一个登记项,称为进程表项。
  • 每当open()成功打开一个文件时,便在系统文件表中建立一个打开文件表项。
    每个表项代表一个一打开的文件,包含信息:
    • 文件状态标签。标签由open()的第二个参数指定。
    • 当前文件位置
    • 指向该文件的的指针
  • 每一个打开文件都有一个vnode结构。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读