Linux 基礎IO(1)內存文件

文章目錄

      • 鋪墊
      • 文件的系統調用接口
      • 文件描述符
      • 緩沖區

鋪墊

  1. 文件=文件內容 + 文件屬性
  2. 訪問文件之前,都要先打開文件,而要訪問,修改,編輯文件,文件就必須加載到內存中
  3. 程序運行起來變成進程,被CPU調度,打開文件
  4. 文件分為內存文件和磁盤文件。內存文件:一個文件在被進程訪問
  5. 一定時間段內,系統中存在多個進程,也可能同時存在更多的被打開的文件,所以操作系統要對打開的文件進行管理:先描述,在組織。所以操作系統中一定要有描述被打開文件的結構體。

所以進程和文件一定是密切相關的。

文件的系統調用接口

我們知道,操作系統要對軟硬件資源做管理,所以要想訪問文件,不能直接操作,必須調用系統調用。

在這里插入圖片描述
在這里插入圖片描述
filename:要打開的文件名
flags:打開文件時可以傳入多個參數選項,用一個或多個參數進行或運算
參數:
O_WRONLY:只寫打開
O_RDONLY:只讀打開
O_RDER:讀寫打開
O_CREAT:如果文件不存在就創建
O_TRUNC:打開文件時清空文件內容
O_APPEND:追加寫
mode:創建文件時的權限

所以fopen中,
w = O_CREAT | O_WRONLY | O_TRUNC
a = O_CREAT | O_WRONLY | O_APPEND
r = O_RDONLY
open系統調用成功時返回新打開的文件描述符,失敗返回-1
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
同樣的,其他系統調用都會用到文件描述符fd

文件描述符

在這里插入圖片描述
在這里插入圖片描述
創建一批文件,發現文件描述符從3開始不斷遞增,那么0,1,2呢?
Linux進程默認情況下會右3個缺省打開的文件描述符,分別是標準輸入0,標準輸出1,標準錯誤2。
所以文件描述符就是從0開始的整數,文件描述符的分配規則:找到從0開始的最小的沒有被使用的整數作為新的文件描述符。當我們打開文件時,操作系統要創建出對應的內核數據結構管理文件,于是就有了file結構體,表示一個被打開文件。進程執行open系統調用,就必須讓進程和文件關聯起來,每個進程都有一個指針files,指向一張表files_struct,每個元素都指向一個被打開文件,下標就是被打開文件的文件描述符。所以文件描述符的本質就是數組下標。

緩沖區

在這里插入圖片描述

緩沖區本質是一塊內存區域,我們說的緩沖區和內核中的緩沖區沒有關系,是語言層面的緩沖區,C語言自帶緩沖區。
為什么要有緩沖區:a.提高使用者的效率 b.聚集數據,一次拷貝,提高整體效率,減少拷貝次數,調用系統調用是有成本的。
文件緩沖區在哪:文件緩沖區是被FILE結構體所維護的,一個文件維護一個緩沖區。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717782.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717782.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717782.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

詳解Win 7重置電腦操作步驟

文章目錄 介紹Win 7 重置系統的方法:1.按下鍵盤上的Windows鍵和R鍵,打開運行窗口,輸入sysprep 點擊回車確定。2.之后就會出現如下界面,在這個新打開的窗口中雙擊 sysprep 程序3.選擇【進入系統全新體驗(00BE) 】&#…

基于SpringBoot的在線拍賣系統(附項目源碼+論文)

摘要 在線拍賣系統,主要的模塊包括管理員;首頁、個人中心、用戶管理、商品類型管理、拍賣商品管理、歷史競拍管理、競拍訂單管理、留言板管理、系統管理,用戶;首頁、個人中心、歷史競拍管理、競拍訂單管理、留言板管理&#xff0…

Linux重新獲取IP地址

你可以通過重啟客戶端來獲取新的IP地址。可以使用以下命令來重啟DHCP客戶端: sudo dhclient -r # 釋放當前IP sudo dhclient # 獲取新的IP 這將釋放當前的IP地址,并請求新的IP地址。 使用ifdown和ifup命令:另一種方法是使用ifdown和i…

STM32學習和實踐筆記(1): 裝好了的keil μVision 5

2019年3月在淘寶上買了這塊STM32的開發板,學了一段時間后就丟下了,今天重新撿起來,決定好好學習、天天向上。 對照教程,今天先把keil5裝上了。 裝的過程有以下幾點值得記錄下: 1)用注冊機時,…

【應用多元統計分析】--多元數據的直觀表示(R語言作圖)

例1.2 為了研究全國31個省、市、自治區2018年城鎮居民生活消費的分布規律,根據調查資料做區域消費類型劃分。 指標: 食品x1:人均食品支出(元/人) 衣著x2:人均衣著商品支出(元/人) 居住x3:人均居住支出(元/人) 生活x4…

歐拉回路(Eulerian Path)

1.定義 如果圖 G G G(有向圖或者無向圖)中所有邊一次僅且一次行遍所有頂點的通路稱作歐拉通路。 如果圖 G G G中所有邊一次僅且一次行遍所有頂點的回路稱作歐拉回路。 具有歐拉回路的圖成為歐拉圖(簡稱 E E E圖)。具有歐拉通路但不具有歐拉回路的圖成為半歐拉圖。 頂點可以經…

【Linux】Linux常用指令介紹

目錄 1、whoami命令 2、pwd命令 3、ls命令 4、cd命令 5、touch命令 6、mkdir命令 7、rm命令 8、man命令 9、cp命令 10、mv命令 11、cat命令 12、more命令 13、less命令 14、head命令 15、tail命令 16、find命令 1、whoami命令 語法:whoani 功能&a…

SpringMVC--03--前端傳數組給后臺

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 案例1乘客個人信息方法1:表單提交,以字段數組接收方法2:表單提交,以BeanListModel接收方法3:將Json對象序…

leetcode移除元素

注意,在本題中,是對原數組進行操作,需要原地刪除指定元素,所以我們可以采用快慢指針來操作。 顧名思義,快慢指針是有兩個指針,一直快指針,一個慢指針。在本題中,快慢指針起點都是0&a…

解鎖人體姿態的秘密:部件親和場(PAF)的革新應用

部件親和場(PAF)原理及其在人體姿態估計中的應用 摘要: 隨著人工智能技術的發展,人體姿態估計在計算機視覺領域受到越來越多的關注。部件親和場(Part Affinity Fields,簡稱PAF)作為一種新興的人體姿態估計技術,通過構建2D向量場來描述人體肢體的方向和位置信息,從而…

Matlab 機器人工具箱 運動學

文章目錄 R.fkine()R.ikine()R.ikine6s()R.ikuncR.jacob0、R.jacobn、R.jacob_dotjtrajctraj參考鏈接 官網:Robotics Toolbox - Peter Corke R.fkine() 正運動學,根據關節坐標求末端執行器位姿 mdl_puma560; % 加載puma560模型 qz % 零角度 qr …

繼承(使用及深入、super、重寫/復寫)--學習JavaEE的day14

day14 一、繼承 概念 Java中的繼承是一個對象獲取父對象的所有屬性和行為的機制 理解:繼承是指一個類(子類)可以繼承另一個類(父類)的屬性和方法 關鍵字extends 優點:減少代碼的冗余 缺點:繼承會增加類與類之間的關系,會增加代碼…

[Unity3d] 網絡開發基礎【個人復習筆記/有不足之處歡迎斧正/侵刪】

TCP/IP TCP/IP協議是一 系列規則(協議)的統稱,他們定義了消息在網絡間進行傳輸的規則 是供已連接互聯網的設備進行通信的通信規則 OSI模型只是一個基本概念,而TCP/IP協議是基于這個概念的具體實現 TCP和UDP協議 TCP:傳輸控制協議,面向連接&#xff0c…

VsCode配置PCL、Open3D自動補全

寫在前面 本文內容 在VsCode上開發PCL、Open3D相關代碼,代碼自動補全 Open3D、PCL的安裝使用見各個版本的Open3D、PCL的編譯、使用教程 平臺/環境 windows11(windows10): visual studio 2022;cmake 3.22; VsCode 通過cmake構建項目; 轉載請…

Excel MATCH函數 兩張順序不同表格,統一排序

目錄 一. 背景二. 添加輔助列,使用MATCH函數生成排序條件三. 效果 一. 背景 有如下圖所示的兩張表格,分別記錄著同一批人的1月份和2月份的工資。表格A和表格B中的姓名列相同,工資列數據不同現在要求參考表格A中的姓名列對表格B中的數據進行排序&#xf…

C語言:預處理

C語言:預處理 預定義符號#define定義常量定義宏宏與函數對比 #操作符##操作符條件編譯頭文件包含庫文件包含本地文件包含嵌套文件包含 預定義符號 C語?設置了?些預定義符號,可以直接使?,預定義符號也是在預處理期間處理的。 __FILE__ //…

多智能體強化學習簡介

基礎概念 什么是多智能體系統 多智能體系統(Multi-Agent System,MAS)是由多個自主智能體組成的系統。這些智能體可以協同工作,也可以獨立行動,以實現各自的目標。在多智能體系統中,每個智能體都有自己的決…

在你的 Vue + Electron 項目里,引入 ESLint

因為我的項目是基于 Electron 平臺的 Web 應用,使用 Vue 3 實現,而且用了 TypeScript,所以,在引入 ESLint 的時候,要考慮好幾種規范的問題。 文章目錄 零、簡介1. 規則2. 配置文件3. 共享配置4. 插件5. 解析器6. 自定義…

Vue開發實例(九)動態路由實現左側菜單導航

之前在【Vue開發實例(六)實現左側菜單導航】文中實現了菜單的導航,本篇是在那個基礎上改造的。 動態路由實現左側菜單導航 一、動態菜單創建二、根據菜單數據來創建路由三、添加路由已加載標記,省的每次點擊菜單都要加載 一、動態…

2021 年 3 月青少年軟編等考 C 語言一級真題解析

目錄 T1. 字符菱形思路分析 T2. 與圓相關的計算思路分析 T3. 蘋果和蟲子 2思路分析 T4. 奇數求和思路分析 T5. 藥房管理思路分析 T1. 字符菱形 給定一個字符,用它構造一個對角線長 5 5 5 個字符,傾斜放置的菱形。 時間限制:1 s 內存限制&a…