1650_MIT 6.828 open函数的简单梳理

article/2023/9/24 21:40:51

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         一个shell的例程分析了很长时间,里面的基础知识一层嵌套一层。不过,这也是补充基本知识的很好的机会。既然自己日常接触的更多的还是这种通用计算机,那么培养一下这方面的思维习惯还是很有帮助的。这一次,看一下open函数。

1. 从分类看,这个函数其实是一个系统调用接口。

2. 之前学习C语言的时候接触过open这个函数,但是印象中并没有见过fcntl.h的头文件。

3. 这一组函数也是我看到的比较有趣的函数,之前没有什么印象有函数名在一个地方直接做两个不同的声明。

4. 这个函数的主要功能其实是把文件或者设备绑定成为一个文件描述符信息,这个也是unix中比较有趣的哲学思想:一切全都是文件。

         这里介绍了几种flags的模式,这种模式其实是很容易理解的,也是我很熟悉的。不过,我熟悉这样的操作倒不是因为C语言或者unix,而是因为我多年来一直采用脚本处理文本文件。

1. 我所接触的shell实现中,接下来会用到的一个参数就是这里,其实是一个mode的概念。或许,早期的UNIX中flags以及mode还是有一定的组合度的。

2. OTH结尾的几个,是用于指定others的权限的。而OTH这三个字母其实是对应单词的一个缩写。

         操作处理有时候是限定于目录处理的,这个可能会有一点让人迷惑,但是只要回到前面的大概前提概念就容易理解了:UNIX中一切全是文件!

         这里的creat(不知道为什么不把后面的e写上),其实是一个多种flags组合的open的等效方式。这么看来,兴许我大概率暂时是用不上了。

         很多时候我有些弄不清库函数和系统调用的关系,两者似乎独立但是从依赖关系来说似乎又应该是统一的。既然能够统一,那么设计一套全新的库函数的意义又是什么?

         或许,随着对OS设计更加深入的认识之后,这样的问题会有答案。

         与这个open经常配合使用的还有一个close,比较简单,就是关闭文件描述符。这个就不单独进行梳理了。


http://www.ngui.cc/article/show-1007567.html

相关文章

C++ 15 string容器

目录 一、string容器 1.1 简介 1.2 构造函数 1.3 赋值操作 1.4 字符串拼接 1.5 字符串查找和替换 1.6 字符串比较 1.7 字符串存取 1.8 字符串插入和删除 1.9 子串获取 一、string容器 1.1 简介 ① string是C风格的字符串,而string本质上是一个类。 ② s…

TryHackMe-Sustah(boot2root)

Sustah 开发人员在他们的游戏中添加了反作弊措施。你是 能否突破限制以访问其内部 CMS? 端口扫描 循例 nmap Web枚举 80端口没啥东西,看一下8085端口 gobuster扫一下 /ping似乎没什么东西 回来home,看看burp 使用bash生成数字字典 使用ff…

【mongodb 基础2】Install MongoDB Community Edition on macOS

文章目录一. 安装准备Install Xcode Command-Line ToolsInstall Homebrew二. Installing MongoDB 6.0 Community Edition1. 下载MongoDB Homebrew 组件包2. 更新组件包3. 安装MongoDBTo install MongoDB三. 安装后包含的组件四. Run&stop MongoDB1. 作为macOS服务的方式运行…

计算机二级考试(C++)复习

文章目录基础知识部分C知识点部分C流操作基础知识部分 指令周期: 一般把计算机完成一条指令所花费的时间称为一个指令周期。指令周期越短,指令执行就越快。 顺序程序: 顺序程序具有顺序性、封闭性和可再现性的特点,使得程序设…

用 Java 演奏千千阙歌是什么体验?

JFugue简介 ​JFugue 是一个开放源代码编程库,它允许人们使用 Java 编程语言来编程音乐,而无需 MIDI 的复杂性。它由 David Koelle 于 2002 年首次发布。当前版本是 JFugue 5.0,已于 2015 年 3 月发布。Brian Eubanks 将 JFugue 描述为 “对于…

一个看起来非常科幻的人脸识别接口与其实现逻辑,用于二次开发

前言看起来非常高端的人脸识别接口,简单的进行二次开发就可以衍生为人脸识别考勤系统、人脸识别安全系统等等;展厅以及实现逻辑启动界面点击“是”:人脸已经录入数据库,识别失败弹出Warning可能因为误判,重新识别&…

Unity即时战略/塔防项目实战(一)——构造网格建造系统

Unity即时战略/塔防项目实战(一)—— 构造网格建造系统 效果展示 Unity RTS游戏网格建造系统实现原理 地形和格子划分,建造系统BuildManager构建 地形最终需要划分成一个一个的小方格,首先定义一下小方格: private…

2022(一等奖)D678基于改进结构函数法的大气气溶胶遥感反演

作品介绍 1 应用背景 大气气溶胶是大气中重要的成分之一,是悬浮于大气中的固体和液体微粒与它们的气体载体共同组成的多相体系,其尺度大约在10-3到102 μm之间。大气气溶胶的特性对空气质量具有良好的指示作用,气溶胶的研究对空气质量的监测…

北邮22信通:(7)实验1 题目四:一元多项式(节省内存版)

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 上一篇文章: 北邮22信通:(6)实验1 题目三 :通讯录管理_青山如墨雨如画的博客-CSDN博客 下一篇文…

pyhton第九天作业

目录 (最大数的出现)编写程序读取整数,找出它们中的最大值,然后计算它的出现次数。假设输入以数字0 结束。假设你输入的是“3 5 2 5 5 50”;序找出的最大数是而 的出现次数是4(提示:维护两个变量 max和count。变量 max 存储的是当前最大数,而…