溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux下文件標(biāo)述符和文件指針的示例分析

發(fā)布時間:2021-07-16 09:54:19 來源:億速云 閱讀:137 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Linux下文件標(biāo)述符和文件指針的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

   Linux下的文件標(biāo)述符和文件指針

文件標(biāo)識符:

首先我們來了解一下文件標(biāo)識符是什么東西?

文件描述符是計算機科學(xué)中的一個術(shù)語,是一個用于表述只想文件的引用的抽象化概念。

在linux當(dāng)中,每個進程會在進程控制塊(PCB)當(dāng)中保存著一份文件描述符表,文件描述符就是這個表的索引,每個表都有一個指

向已經(jīng)打開文件的指針。

每個linux進程都應(yīng)該有三個標(biāo)準(zhǔn)的文件描述符,對應(yīng)三個標(biāo)準(zhǔn)流。

整數(shù)值名稱(unistd.h)符號常量(stdio.h)文件流
0Standard inputSTDIN_FILENOstdin
1Standard outputSTDOUT_FILENOstdout
2Standard errorSTDERR_FILENOstderr

文件描述符在形式上是一個非負(fù)整數(shù),實際上,它是一個索引值,指向內(nèi)核為每一個進程所維護的該進程打開文件的記錄表。當(dāng)程

序打開一個現(xiàn)有文件或者創(chuàng)建一個新文件時,內(nèi)核向進程返回一個文件描述符。在程序設(shè)計中,一些涉及底層的程序編寫往往會圍

繞著文件描述符展開。但是文件描述符這一概念往往只適用于UNIX、Linux這樣的操作系統(tǒng)

與文件描述符相關(guān)的操作:

功能操作
文件描述符生成open()、socket()、pipe()等
與單一文件描述符相關(guān)的操作read()、write()、send()、fchmod()等
與復(fù)數(shù)文件描述符相關(guān)的操作select()、poll()等
與文件描述符表相關(guān)度的操作close()、dup()等

文件指針:

文件指針是C語言當(dāng)中我們所學(xué)習(xí)的東西,C語言當(dāng)中用一個指針變量指向一個文件,這個指針就被稱為文件指針。通過文件指針我們可以對所指的文件進行各種的操作。C語言當(dāng)中使用的是文件指針而不是文件描述符做為I/O的句柄。文件指針指向進程用戶區(qū)中的一個被稱為FILE結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。FILE結(jié)構(gòu)包含一個緩沖區(qū)和一個文件描述符。

文件指針式C語言的通用的格式,所以相對來說,更加便于移植.

我們通常來獲取文件指針:

FILE *fp = fopen("test.txt","r");

獲取到指針以后,我們就可以獲得指針當(dāng)中文件描述符的信息。

文件描述符是唯一的,但是文件指針不是唯一的,文件指針指向的對象是唯一的。

文件標(biāo)述符和文件指針的轉(zhuǎn)換:

int fileno(FILE *stream);

FILE *fdopen(int fd,const char *mode);

fdopen第一個參數(shù)是一個打開的文件描述符,mode是表示打開方式的字符串,和fopen相同,比如說“w”或者“r”.

fileno函數(shù),它返回和文件流對應(yīng)的文件描述符,失敗返回-1。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Linux下文件標(biāo)述符和文件指針的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI