文件IO、文件IO與標準IO的區別

  • 一、文件IO --->fd(文件描述符)
    • 打開文件open
    • 讀、寫文件read/write
    • 關閉文件close
    • #include <sys/types.h>
    • #include <sys/stat.h>
    • #include<fcntl.h>
    • 文件描述符:操作系統中已打開文件的標識符。小的、非負的整形數據
      • 范圍:0-1023(共1024個)
      • 分配原則:最小未被使用原則
      • 系統默認已經打開的三個文件占用了0(標準輸入設備),1(標準輸出設備),2標準出錯設備)這三個文件描述符
      • 已打開文件需及時關閉,否則文件描述符使用完時會造成文件描述符泄漏
    • flags:打開方式
      • O_RDONLY :只讀方式
      • O_WRONLY:只寫方式
      • O_RDWR:可讀可寫
      • O_CREAT:創建文件
      • O_TRUNC:清空文件
      • O_APPEND:追加寫

    • open :int open(const char *pathname, int flags); int open(const char *pathname,int flags,mode_t mode);
      • 功能:打開文件并獲得一個文件描述符
      • 參數:pathname:要打開的文件的文件名;flags:打開方式;mode:文件讀寫執行操作權限(IWXTWXIWX、111111111 --->0777、IW-1W-I--、110110100 --->0664)
      • 返回值:成功:文件描述符;失敗:-1
    • write :ssize_t write(int fd, const void *buf, size_t count);
      • 功能:向文件中寫入數據
      • 參數:fd:文件描述符;buf:要寫入的數據的首地址;count:要寫入的字節數
      • 返回值:;成功:實際寫入的字節數;失敗:-1
    • read :ssize_t read(int fd, void *buf, size_t count);
      • 功能:從文件中讀取數據
      • 參數:fd:文件描述符;buf:存儲數據的空間首地址;count:希望讀取的字節數
      • 返回值:成功:實際讀到的字節數;失敗:-1;讀到文件末尾:0
    • 文件定位函數lseek :off_t lseek(int fd, off_t offset, int whence);
      • 功能:文件讀寫位置定位
      • 參數:fd:文件描述符;offset:偏移量(字節);whence:要偏移的相對位置
        • SEEK_SET:文件開頭位置
        • SEEK_CUR:文件當前讀寫位置
        • SEEK_END:文件末尾
      • 返回值:成功:返回當前讀寫位置到文件開頭的偏移量;失敗:-1
  • 二、標準IO與文件IO的區別
    • 標準IO
      • 屬于C庫函數,移植性強
      • 標準IO是系統調用的一次封裝,增加了緩沖區,目的是提高數據讀寫的效率
      • 主要用在對普通文件的操作
    • 文件IO
      • 屬于系統調用,只能用于Linux操作系統,移植性弱
      • 文件IO無緩沖區
      • 主要應用在對硬件的操作,也可以操作普通文件
    • 緩沖區
      • 行緩沖 1k(1024字節)--->人機交互界面、終端
        • 行緩沖區被刷新的方法
          • 程序結束,自動刷新緩沖區
          • 遇到“\n”刷新
          • fflush(強制刷新)
          • 緩沖區滿時自動刷新
      • 全緩沖 4k(4096字節)--->文件緩沖區
        • 全緩沖區被刷新的方法
          • 程序結束,自動刷新緩沖區
          • fflush(強制刷新)
          • 文件關閉刷新
          • 緩沖區滿時自動刷新
      • 無緩沖 0k --->出錯信息對應的設備
        • stderr(標準出錯設備)--->無緩沖

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

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

相關文章

【模型剪枝2】不同剪枝方法實現對 yolov5n 剪枝測試及對比

目錄 一、背景 二、剪枝 1. Network Slimming 1.0 代碼準備 1.1 稀疏化訓練 1.2 剪枝 1.3 微調 1.4 測試總結 2. Torch Pruning&#xff08;TP&#xff09; 2.1 MagnitudePruner 2.1.1 剪枝 2.1.2 retrain 2.1.3 測試總結 2.2 SlimmingPruner 2.2.1 定義重要性評…

AI入門學習--AI模型評測

一、AI模型評測目標傳統質量主要關注功能、性能、安全、兼容性等。 AI模型評測在此基礎上,引入了全新的、更復雜的評估維度: 1.性能/準確性:這是基礎,在一系列復雜的評測基準上評價個性能指標。 2.安全性:模型是否可能被用于惡意目的?是否會生成有害、違法或有毒的內容?是否容…

nt!MmCreatePeb函數分析之peb中OSMajorVersion的由來

第一部分&#xff1a;NTSTATUS MmCreatePeb (IN PEPROCESS TargetProcess,IN PINITIAL_PEB InitialPeb,OUT PPEB *Base) {PPEB PebBase;PebBase->OSMajorVersion NtMajorVersion;PebBase->OSMinorVersion NtMinorVersion;PebBase->OSBuildNumber (USHORT)(NtBuildN…

Unity TimeLine使用教程

1.概述 Timeline 是一個基于時間軸的序列化編輯工具&#xff0c;主要用于控制游戲或動畫中的 過場動畫&#xff08;Cutscenes&#xff09;、劇情事件、角色動畫混合、音頻控制 等。它類似于視頻編輯軟件&#xff08;如 Adobe Premiere&#xff09;的時間線&#xff0c;但專門針…

數據分析基本內容(第二十節課內容總結)

1.pd.read_csv(一個文件.csv)&#xff1a;從本地文件加載數據&#xff0c;返回一個 DataFrame 對象&#xff0c;這是 pandas 中用于存儲表格數據的主要數據結構2.df.head()&#xff1a;查看數據的前五行&#xff0c;幫助快速了解數據的基本結構和內容3.df.info()&#xff1a;查…

2025年最新原創多目標算法:多目標酶作用優化算法(MOEAO)求解MaF1-MaF15及工程應用---盤式制動器設計,提供完整MATLAB代碼

一、酶作用優化算法 酶作用優化&#xff08;Enzyme Action Optimizer, EAO&#xff09;算法是一種2025年提出的新型仿生優化算法&#xff0c;靈感源于生物系統中酶的催化機制&#xff0c;發表于JCR 2區期刊《The Journal of Supercomputing》。其核心思想是模擬酶與底物的特異性…

用 COLMAP GUI 在 Windows 下一步步完成 相機位姿估計(SfM) 和 稀疏點云重建的詳細步驟:

使用 COLMAP GUI 進行 SfM 和稀疏點云重建的步驟1. 打開 COLMAP GUI運行 colmap.bat&#xff0c;會彈出圖形界面。2. 新建項目&#xff08;或打開已有項目&#xff09;點擊菜單欄的 File > New Project&#xff0c;選擇一個空文件夾作為項目目錄&#xff08;建議新建一個空目…

天線設計 介質材料PEC和FR4有什么區別嗎

在電磁仿真&#xff08;包括 CST 中&#xff09;&#xff0c;PEC 和 FR4 是兩種完全不同的材料類型&#xff0c;主要區別如下&#xff1a;材料性質&#xff1a;PEC&#xff08;Perfect Electric Conductor&#xff0c;理想電導體&#xff09;&#xff1a;是一種理論上的理想材料…

mysql鎖+索引

mysql鎖按鎖的粒度分類表級鎖&#xff08;Table - level locks&#xff09;特點&#xff1a;對整張表進行鎖定&#xff0c;實現簡單&#xff0c;加鎖和釋放鎖的速度快&#xff0c;但并發度較低。當一個事務對表加表級鎖后&#xff0c;其他事務對該表的讀寫操作都可能被阻塞。應…

計算機視覺CS231n學習(7)

可視化和理解 這里主要是對CNN中間的層的結果可視化濾波器可視化 直接可視化網絡各層的濾波器權重&#xff0c;高層濾波器的可視化結果趣味性較低&#xff0c;而底層濾波器通常對應邊緣、紋理等基礎視覺特征 &#xff08;“高層濾波器” 通常指的是網絡中靠后的卷積層所包含的濾…

OpenBMC中工廠模式的簡明工作流程解析

本文將以最簡單直接的方式&#xff0c;從零開始講解OpenBMC中工廠模式的完整工作流程&#xff0c;包括從設計到使用的全生命周期。 1. 工廠模式最簡示例 我們先從一個最基礎的工廠模式實現開始&#xff1a; // 產品接口 class GpioPin { public:virtual void setValue(bool val…

解決:Error updating changes: detected dubious ownership in repository at

在通過 Git Bash 提交項目代碼時輸入 git add . 命令后&#xff0c;報錯&#xff1a;Error updating changes: detected dubious ownership in repository at ...這是因為 該項目的所有者 與 現在的用戶 不一致 比如說&#xff1a; 該項目的所有者是 Administrator&#xff0c;…

DataEase V2 社區版安裝部署

參考&#xff1a;使用外置 MySQL 部署 DataEase v2 - FIT2CLOUD 知識庫 一、下載安裝包 開源社區 - FIT2CLOUD 飛致云 選擇社區版下載 下載后上傳到 linux 的目錄 &#xff08;要求至少200G&#xff09; 二、在MySQL8中創建數據庫 # 創建DataEase庫 CREATE DATABASE datae…

nginx高性能web服務器

web服務基礎介紹 一、Web服務核心流程 #mermaid-svg-NCj4hbRIvvgMXmcK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NCj4hbRIvvgMXmcK .error-icon{fill:#552222;}#mermaid-svg-NCj4hbRIvvgMXmcK .error-text{fil…

_init__.py的作用

目錄 場景1:沒有 `__init__.py` 的情況 場景2:有 `__init__.py` 并導入模塊 場景3:用 `__all__` 定義"推薦工具" 注意:工具箱內部的工具互相調用 情況1:在 `__init__.py` 中導入模塊 情況2:在 `__init__.py` 中直接導入模塊里的功能 關鍵原則 在 Python 中,__…

瀏覽器面試題及詳細答案 88道(12-22)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

開發避坑指南(23):Tomcat高版本URL特殊字符限制問題解決方案(RFC 7230 RFC 3986)

異常信息 java.lang.IllegalArgumentException: 在請求目標中找到無效字符[/order/show?orderType01&orderTitle0xe50x8f0xa30xe50xb20xb80xe50x8a0xa80xe60x800x81&pageNum1 ]。有效字符在RFC 7230和RFC 3986中定義org.apache.coyote.http11.Http11InputBuffer.parse…

HTTPS的應用層協議

HTTPS的應用層協議 方案 5 - 非對稱加密 對稱加密 證書認證 在客戶端和服務器剛一建?連接的時候, 服務器給客戶端返回一個 證書&#xff0c;證書包含了之前服務端的公鑰, 也包含了網站的身份信息. 客戶端進行認證 當客戶端獲取到這個證書之后, 會對證書進行校驗(防止證書是偽…

【SpringBoot】05 容器功能 - SpringBoot底層注解的應用與實戰 - @Configuration + @Bean

文章目錄前言一、創建兩個組件二、使用傳統方式源代碼解釋三、使用SpringBoot方法源代碼解釋四、查看是否添加到組件中查看自定義組件名配置類在容器中注冊的是單實例組件配置類本身也是容器中的一個組件Configuration的proxyBeanMethods屬性&#xff1a;代理bean的方法proxyBe…

c#聯合Halcon進行OCR字符識別(含halcon-25.05 百度網盤)

1.下載安裝halcon 通過網盤分享的文件&#xff1a;halcon-25.05.0.0-x64-win64 鏈接: https://pan.baidu.com/s/1XAx-8ZQM-ZHkgHIc-dhCYw 提取碼: whek 2.c#環境配置 創建test_halcon_ocr項目 找到halcon的安裝路徑 我的&#xff1a; D:\halcon\HALCON-25.05-Progress\bin\x64…