day26 文件io

函數接口

1 .open和close
文件描述符:系統為用open打開的文件分配的標識符
非負的整形數據
0-1023
最小未被使用原則
使用完時及時釋放,避免文件描述符溢出
文件描述溢出就是文件使用完沒有及時關閉文件

int open(const char *pathname, int flags); //打開一個已有文件int open(const char *pathname, int flags,int mode);//O_CREAT   + 權限功能:獲得一個文件描述符參數:pathname:文件名flags:必flags:O_RDONLY : 只讀O_WRONLY: 只寫O_RDWR :  讀寫O_CREAT :不存在則創建O_TRUNC : 清空文件O_APPEND:追加寫"r"          : O_RDONLY;"r+"        : O_RDWR ;"w"        :  O_WRONLY  |  O_CREAT |  O_TRUNC ;  0664"w+"      : O_RDWR  |  O_CREAT |  O_TRUNC ;   0664"a"         : O_WRONLY | O_CREAT | O_APPEND; 0664"a+"       : O_RDWR | O_CREAT | O_APPEND;   0664mode:對文件的操作權限當flags中有 O_CREAT標志時,必須填寫mode參數,一般加0664就好返回值:成功返回文件描述符 (最近最小未使用的一個數字)文件描述符:系統為已打開的文件分配的標識符非負的整形數據0-1023最小未被使用原則使用完時及時釋放,避免文件描述符溢出失敗返回-1int  fd = open("1.txt",O_WRONLY|O_CREAT,0666);close(int fd);默認打開流和描述符對應
int                                                   FILE *
STDIN_FILENO------->0 :  標準輸入設備                -----》(stdin)
STDOUT_FILENO---->1 :標準輸出設備               -----》(stdout)
STDERR_FILENO---->2:標準出錯設備                -----》(stderr

2.write和read

       3.writechar buf[1024];ssize_t write(int fd,  const  void *buf, size_t count);功能://通過文件描述符向描述符指的文件中寫一串數據,數據來源是buf參數:fd:文件描述符buf:要寫入文件的字符串的首地址count:要寫入字符的個數返回值: 成功返回實際寫入的個數失敗返回-14.readssize_t read(int fd, void *buf, size_t count);功能:通過文件描述符讀取描述符指向的文件中的數據,放到buf、參數:fd:文件描述符buf:存放數據空間的首地址count:要讀到數據的個數返回值:成功返回讀到數據的個數失敗返回-1讀到文件結尾返回0

使用文件IO實現cat功能;
使用文件IO實現cp功能;

cat

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>int main(int argc , char *argv[]){int fp = open(argv[1],O_RDWR);if(fp == -1){printf("not open\n");return -1;}char buff[1024] = {};int  ret = read(fp,buff,1024) ;while(ret  != 0){write(1,buff,1024);ret = read(fp,buff,1024);}close(fp);
}

copy

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>int main(int argc , char *argv[]){int fp = open(argv[1],O_RDWR);int fq = open(argv[2],O_RDWR|O_TRUNC);if(fp == -1 || fq == -1){printf("not open\n");return -1;}char buff[1024] = {};int  ret = read(fp,buff,1024) ;while(ret  != 0){int rt = write(fq,buff,ret);ret = read(fp,buff,1024);}close(fp);close(fq);
}

3文件定位函數:lseek


off_t lseek(int fd, off_t offset, int whence);
功能:實現文件操作位置偏移
參數:fd:描述符offset:偏移量whence:偏移的相對位置SEEK_SETSEEK_CURSEEK_END
返回值:成功:返回文件當前操作位置到文件開頭的偏移量失敗:-1

4.系統io和文件io
文件對底層操作,速度快,一般操作硬件對應的設備文件
標準io是在文件的基礎上增加了緩沖區,提高對普通文件操作的效率。
在這里插入圖片描述
在這里插入圖片描述
5.緩沖區
輸出緩沖區

行緩沖,1k, terminal,主要用于人機交互--- stdout ---終端緩存區滿或者遇到\n刷新	1024行緩存多是關于終端的一些操作1.遇到 \n刷新(printf)2.緩存區滿刷新3.程序結束刷新4.fflush刷新  fflush(stdout); //強制刷新 全緩沖,4k,主要用于文件的讀寫 --- 普通文件的操作緩存區滿刷新緩存區 4096對普通文件進行標準IO操作,建立的緩存一般為全緩存刷新條件:1.緩存區滿刷新(滿4096刷新到文件內一次)2.程序結束刷新3.fflush來刷新  fflush(fp);4.文件關閉刷新無緩沖,0k  主要用于出錯處理信息的輸出 stderr 不對數據緩存直接刷新printf();==>>stdout //有緩沖fprintf(stderr,"fopen error %s",filename);//無緩沖stderr無緩沖界面交互	出錯處理

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

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

相關文章

Java Stream流詳解——串行版

Stream流——串行版 ? Stream流是java8引入的特性&#xff0c;極大的方便了我們對于程序內數據的操作&#xff0c;提高了性能。通過函數式編程解決復雜問題。 1.BaseStream<T,S extense BaseStream<T,S>> ? 他是流處理的基石概念&#xff0c;重點不在于這個接…

el-backtop(返回頂部)

案例&#xff1a; <el-backtop target".app-main"><svg-icon icon-class"backtop" size"24px" /></el-backtop>

探秘“香水的 ChatGPT”:AI 開啟嗅覺奇幻之旅!

你沒有看錯&#xff0c;AI也能聞到味道了&#xff01;這是一家名為Osmo公司公布的信息&#xff0c;他們成功創造出了由AI生成的李子味道&#xff0c;快跟著小編一探究竟吧~ 【圖片來源于網絡&#xff0c;侵刪】 Osmo公司的這項技術&#xff0c;通過分析香味的化學成分和人類嗅…

Vue3入門(9)

1. 【 replace屬性】 作用&#xff1a;控制路由跳轉時操作瀏覽器歷史記錄的模式。 瀏覽器的歷史記錄有兩種寫入方式&#xff1a;分別為push和replace&#xff1a; - push是追加歷史記錄&#xff08;默認值&#xff09;。 - replace是替換當前記錄。 . 開啟replace模式&#xff…

第十九章 C++ 日期 時間

C 日期 & 時間 C 標準庫沒有提供所謂的日期類型。C 繼承了 C 語言用于日期和時間操作的結構和函數。為了使用日期和時間相關的函數和結構&#xff0c;需要在 C 程序中引用 <ctime> 頭文件。 有四個與時間相關的類型&#xff1a;clock_t、time_t、size_t 和 tm。類型…

電子配件行業的未來之路:產品說明書數字化轉型的力量

在科技飛速發展的今天&#xff0c;電子配件行業作為科技創新的前沿陣地&#xff0c;正經歷著前所未有的變革。從智能手機、平板電腦到智能穿戴設備&#xff0c;各種新型電子配件層出不窮&#xff0c;極大地豐富了人們的生活。然而&#xff0c;隨著產品種類的增多和功能的復雜化…

強化學習方法分類詳解

強化學習方法分類詳解 引言 強化學習&#xff08;Reinforcement Learning, RL&#xff09;是一種通過智能體與環境互動來學習如何做出最佳決策的方法。根據不同的優化中心、策略特性、環境模型、獎勵函數、動作空間類型以及行為策略和目標策略的一致性&#xff0c;RL可以分為…

RockyLinux介紹及初始化

文章目錄 一、背景二、下載 RockyLinux9 鏡像三、環境初始化四、安裝 Docker 環境 一、背景 這里講一個小故事&#xff1a; 我們都知道Linux 內核是由芬蘭計算機科學家林納斯托瓦茲 (Linus Torvalds) 于 1991 年首次開發的&#xff0c;隨后有一個非常重要的公司RetHat成立&am…

AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode和 桔子數據 的 價格對比

要對比 AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode 和 桔子數據 的 價格&#xff0c;我們需要先了解每個平臺的定價模型、服務類型以及不同服務之間的價格差異。以下是根據各個平臺常見服務&#xff08;如計算實例、存儲、數據傳輸等&#xff09;做的一個 簡化…

OpenCV相機標定與3D重建(36)計算兩幅圖像之間基本矩陣(Fundamental Matrix)的函數findFundamentalMat()的使用

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 從兩幅圖像中的對應點計算基本矩陣。 cv::findFundamentalMat 是 OpenCV 中用于計算兩幅圖像之間基本矩陣&#xff08;Fundamental Matrix&#…

Vscode + gdbserver遠程調試開發板指南:

本章目錄 步驟環境準備網絡配置vscode配置步驟 (全圖示例)開發板配置開始調試注意: 每次斷開之后&#xff0c;開發板都需要重新啟動gdbserver才可調試。 參考鏈接: 步驟 環境準備 將交叉編譯鏈路徑加入$PATH變量&#xff1a;確保系統能夠找到所需的工具。 export PATH$PATH:/p…

對外發PDF設置打開次數

在線 Host PDF 文件并對鏈接進行限制——保障文件安全的最佳解決方案 在數字化辦公和遠程協作日益普及的今天&#xff0c;如何安全高效地分享 PDF 文件成為許多用戶關注的重點。MaiPDF 作為一款功能強大的在線工具&#xff0c;不僅支持在線 host PDF 文件&#xff0c;還提供多…

VS2022 中的 /MT /MTd /MD /MDd 選項

我們有時編譯時,需要配置這個 運行庫,指定C/C++運行時庫的鏈接方式。 如下圖 那么這些選項的含義是什么? /MT:靜態鏈接多線程庫 /MT選項代表“Multi-threaded Static”,即多線程靜態庫。選擇此選項時,編譯器會從運行時庫中選擇多線程靜態連接庫來解釋程序中的代碼,…

MacOS下TestHubo安裝配置指南

TestHubo是一款開源免費的測試管理工具&#xff0c; 下面介紹MacOS私有部署的安裝與配置。TestHubo 私有部署版本更適合有嚴格數據安全要求的企業&#xff0c;支持在本地或專屬服務器上運行&#xff0c;以實現對數據和系統的完全控制。 1、Mac 服務端安裝 Mac安裝包下載地址&a…

Windows 11 配置gym、mujoco、mujoco-py環境教程

Windows 11 配置gym、mujoco、mujoco-py環境教程 整理了windows11系統安裝mujoco、mujoco_py、gym的教程以及報錯解決方法。 環境版本 mujoco-py-2.1.2.14 mujoco210 gym==0.23.1 python 3.9.16 pytorch 1.12.1+cu113 mujoco安裝 1. 在Github中下載mujoco210壓縮包 G…

Java重要面試名詞整理(五):Redis

文章目錄 Redis高級命令Redis持久化RDB快照&#xff08;snapshot&#xff09;**AOF&#xff08;append-only file&#xff09;****Redis 4.0 混合持久化** 管道&#xff08;Pipeline&#xff09;**StringRedisTemplate與RedisTemplate詳解**Redis集群方案gossip腦裂 Redis LuaR…

Amazon Bedrock 實踐 - 利用 Llama 3.2 模型分析全球糖尿病趨勢

黃浩文 資深開發者布道師 亞馬遜云科技 擁有電信、互聯網以及云計算等行業超過 20 年的豐富經驗&#xff0c;曾任職于微軟、Sun 和中國電信。他目前專注于生成式 AI、大型語言模型 (LLM)、機器學習和數據科學等領域的技術內容創作和實踐分享&#xff0c;致力于賦能全球開發者。…

期權懂|如何計算期權賣方平倉后的盈利?

錦鯉三三每日分享期權知識&#xff0c;幫助期權新手及時有效地掌握即市趨勢與新資訊&#xff01; 如何計算期權賣方平倉后的盈利&#xff1f; 期權賣方平倉后的盈利計算涉及多個因素&#xff0c;包括期權的交易價格、平倉價格以及權利金的變動等。 交易價格&#xff1a;期權賣…

【連續學習之VCL算法】2017年論文:Variational continual learning

1 介紹 年份&#xff1a;2017 期刊&#xff1a; arXiv preprint Nguyen C V, Li Y, Bui T D, et al. Variational continual learning[J]. arXiv preprint arXiv:1710.10628, 2017. 本文提出的算法是變分連續學習&#xff08;Variational Continual Learning, VCL&#xf…

多視圖 (Multi-view) 與多模態 (Multi-modal)

多視圖 (Multi-view) 與多模態 (Multi-modal) 是兩種不同的數據處理方式&#xff0c;它們在機器學習和數據分析中有著重要的應用。盡管這兩者有一些相似之處&#xff0c;但它們關注的角度和處理方法有所不同。 多視圖 (Multi-view) 定義&#xff1a;多視圖指的是同一數據對象…