您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關linux中標準IO及文件描述符是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
文件描述符是一個整型數值
文件描述符是標記一個被打開的特定的文件的
Linux系統分配文件描述符有一定的規則:
從小到大的方式來分配文件描述符
文件關閉后, 之前分配的文件描述符會被系統回收
系統回收的文件描述符會重新與未被占用的文件描述符一起, 以從小到大的規則再次進行分配
Linux系統啟動之后, 返回的文件描述符是從fd = 3開始的
Linux系統啟動之后, fd = 0, 1, 2三個文件描述符被分配給了stdin, stdout及stderr
fd = 0, 1, 2三個文件描述符可以通過編程的方式關閉文件來釋放(當前的stdout是輸出到命令行的), 然后重新打開一個文件, 這樣標準輸入輸出便會重定位到了我們打開的文件了. 這樣可以實現標準輸出的重定位.
1. dup函數復制文件描述符
- dup復制文件描述符,新的文件描述符是Linux系統自動分配的未被使用的最小值
2. dup2復制文件描述符
- dup2復制文件描述符時,編程者可以指定復制的新的文件描述符的數值,以下實例指定文件描述符為6.
3. fcntl復制文件描述符
- fcntl也可以用來復制文件描述符
- fcntl的函數原型為 int fcntl(int fd, int cmd, ... /* arg */ );
各參數含義為:
fd: 舊的文件描述符
cmd:命令參數,不同的命令參數執行不同的任務
.../* arg */: 變參,與cmd參數密切相關.例如在cmd為F_DUPFD時,fcntl函數可以指定復制后的新的文件描
述符的大小大于或者等于參數arg
之前操作文件有FileIO, 為何這里又出現了標準IO?
標準IO也是操作文件的一些標準庫函數
標準IO是在FileIO的一些列Linux內核API的基礎上進行了一層封裝
標準IO在封裝時提供了應用層對文件讀寫的緩沖, 這樣可以與Linux kernel在對文件讀寫是的緩沖進行配合, 從而提高文件操作的效率
標準IO庫函數屏蔽了不同操作系統之間的差別, 從而在不同操作系統上使用方法幾乎一模一樣(Linux, Windows)
標準IO包含哪些常用的庫函數及如何使用?
常用的標準IO庫函數有: fopen, fclose, fwrite, fread, fflush, fseek等等
常用的標準IO庫函數的用法與FileIO的常用函數基本對應及相似
舉例說明用法
關于linux中標準IO及文件描述符是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。