国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

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

2024-08-28 00:04:06
字體:
供稿:網(wǎng)友

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

文件標(biāo)識(shí)符:

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

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

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

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

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

整數(shù)值 名稱 (unistd.h)符號(hào)常量 (stdio.h)文件流
0 Standard input STDIN_FILENO stdin
1 Standard output STDOUT_FILENO stdout
2 Standard error STDERR_FILENO stderr

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

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

繞著文件描述符展開。但是文件描述符這一概念往往只適用于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)中用一個(gè)指針變量指向一個(gè)文件,這個(gè)指針就被稱為文件指針。通過文件指針我們可以對所指的文件進(jìn)行各種的操作。C語言當(dāng)中使用的是文件指針而不是文件描述符做為I/O的句柄。文件指針指向進(jìn)程用戶區(qū)中的一個(gè)被稱為FILE結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。FILE結(jié)構(gòu)包含一個(gè)緩沖區(qū)和一個(gè)文件描述符。

文件指針式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第一個(gè)參數(shù)是一個(gè)打開的文件描述符,mode是表示打開方式的字符串,和fopen相同,比如說“w”或者“r”.

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

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 多伦县| 改则县| 吴桥县| 策勒县| 宜黄县| 滨海县| 石阡县| 庆云县| 米易县| 武陟县| 页游| 汨罗市| 伊金霍洛旗| 五常市| 洞口县| 大连市| 武功县| 龙泉市| 望城县| 五指山市| 耒阳市| 青浦区| 温州市| 盐池县| 万盛区| 建阳市| 平顺县| 习水县| 建瓯市| 邛崃市| 宽甸| 鹿邑县| 中西区| 清原| 巢湖市| 赤壁市| 确山县| 临海市| 广河县| 漾濞| 十堰市|