導航:首頁 > 文件類型 > linux文件重命名api

linux文件重命名api

發布時間:2025-10-11 21:03:45

linux庫函數,Linux 系統API 這兩個概念有區別嗎

Linux下對文件操作有兩種方式:系統調用(system call)和庫函數調用(Library functions)。系統調用實際上就是指最底層的一個調用,在linux程序設計裡面就是底層調用的意思。面向的是硬體。而庫函數調用則面向的是應用開發的,相當於應用程序的api,採用這樣的方式有很多種原因,第一:雙緩沖技術的實現。第二,可移植性。第三,底層調用本身的一些性能方面的缺陷。第四:讓api也可以有了級別和專門的工作面向。
1、系統調用
系統調用提供的函數如open, close, read, write, ioctl等,需包含頭文件unistd.h.以write為例:其函數原型為 size_t write(int fd, const void *buf, size_t nbytes),其操作對象為文件描述符或文件句柄fd(file descriptor),要想寫一個文件,必須先以可寫許可權用open系統調用打開一個文件,獲得所打開文件的fd,例如 fd=open(\逗/dev/video\地, O_RDWR)。fd是一個整型值,每新打開一個文件,所獲得的fd為當前最大fd加1.Linux系統默認分配了3個文件描述符值:0-standard input,1-standard output,2-standard error.
系統調用通常用於底層文件訪問(low-level file access),例如在驅動程序中對設備文件的直接訪問。
系統調用是操作系統相關的,因此一般沒有跨操作系統的可移植性。
系統調用發生在內核空間,因此如果在用戶空間的一般應用程序中使用系統調用來進行文件操作,會有用戶空間到內核空間切換的開銷。事實上,即使在用戶空間使用庫函數來對文件進行操作,因為文件總是存在於存儲介質上,因此不管是讀寫操作,都是對硬體(存儲器)的操作,都必然會引起系統調用。也就是說,庫函數對文件的操作實際上是通過系統調用來實現的。例如C庫函數fwrite()就是通過write()系統調用來實現的。
這樣的話,使用庫函數也有系統調用的開銷,為什麼不直接使用系統調用呢看這是因為,讀寫文件通常是大量的數據(這種大量是相對於底層驅動的系統調用所實現的數據操作單位而言),這時,使用庫函數就可以大大減少系統調用的次數。這一結果又緣於緩沖區技術。在用戶空間和內核空間,對文件操作都使用了緩沖區,例如用fwrite寫文件,都是先將內容寫到用戶空間緩沖區,當用戶空間緩沖區滿或者寫操作結束時,才將用戶緩沖區的內容寫到內核緩沖區,同樣的道理,當內核緩沖區滿或寫結束時才將內核緩沖區內容寫到文件對應的硬體媒介。
2、庫函數調用
標准C庫函數提供的文件操作函數如fopen, fread, fwrite, fclose, fflush, fseek等,需包含頭文件stdio.h.以fwrite為例,其函數原型為size_t fwrite(const void *buffer, size_t size, size_t item_num, FILE *pf),其操作對象為文件指針FILE *pf,要想寫一個文件,必須先以可寫許可權用fopen函數打開一個文件,獲得所打開文件的FILE結構指針pf,例如pf=fopen(\逗~/proj/filename\地, \逗w\地)。實際上,由於庫函數對文件的操作最終是通過系統調用實現的,因此,每打開一個文件所獲得的FILE結構指針都有一個內核空間的文件描述符fd與之對應。同樣有相應的預定義的FILE指針:stdin-standard input,stdout-standard output,stderr-standard error.
庫函數調用通常用於應用程序中對一般文件的訪問。
庫函數調用是系統無關的,因此可移植性好。
由於庫函數調用是基於C庫的,因此也就不可能用於內核空間的驅動程序中對設備的操作。

閱讀全文

與linux文件重命名api相關的資料

熱點內容
怎麼用wps製作多張照片pdf文件 瀏覽:439
什麼時候有中文編程 瀏覽:141
軟體里的文件怎麼刪掉 瀏覽:58
js小數類型字元串變成整數 瀏覽:832
電腦密碼保存在那個文件里 瀏覽:279
每次打開cad文件都會打開一個網頁 瀏覽:206
金華ps怎麼自己製作網站 瀏覽:43
微信彤彤去疤 瀏覽:806
appstoreapp轉讓流程 瀏覽:913
java重構ifelse 瀏覽:136
ps打開文件總是合並到一個窗 瀏覽:143
逆水寒找不到游戲文件 瀏覽:459
win8密碼提示不見了 瀏覽:630
怎麼把相同文件名放到文件夾 瀏覽:406
javah頭文件 瀏覽:433
微盤能用的版本 瀏覽:859
編程課上的編程軟體叫什麼 瀏覽:639
電腦盤里的文件名 瀏覽:348
文件夾保存在哪裡比較好 瀏覽:424
編程基礎一般是什麼語言 瀏覽:427

友情鏈接