最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年05月19日 11:53:14   作者:Dawn_sf  
這篇文章主要介紹了詳解Linux下的文件標(biāo)述符和文件指針的相關(guān)資料,需要的朋友可以參考下

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

文件標(biāo)識符:

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

文件描述符是計(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)符號常量(stdio.h)文件流
0Standard inputSTDIN_FILENOstdin
1Standard outputSTDOUT_FILENOstdout
2Standard errorSTDERR_FILENOstderr

文件描述符在形式上是一個(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。

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

相關(guān)文章

  • linux sed命令詳解(推薦)

    linux sed命令詳解(推薦)

    sed命令是一個(gè)面向字符流的非交互式編輯器,也就是說sed不允許用戶與它進(jìn)行交互操作。接下來通過本文給大家詳細(xì)介紹linux sed命令相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧
    2017-04-04
  • 高級開發(fā)運(yùn)維測試必須掌握的envsubst命令使用詳解

    高級開發(fā)運(yùn)維測試必須掌握的envsubst命令使用詳解

    這篇文章主要為大家介紹了高級開發(fā)運(yùn)維測試必須掌握的envsubst命令使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 消耗CPU資源的shell腳本

    消耗CPU資源的shell腳本

    使用死循環(huán)消耗CPU資源,如果服務(wù)器是有多顆CPU,可以選擇消耗多少顆CPU的資源
    2013-08-08
  • linux系統(tǒng)上傳下載命令rz和sz的教程

    linux系統(tǒng)上傳下載命令rz和sz的教程

    這篇文章主要介紹了linux系統(tǒng)上傳下載命令rz和sz的安裝測試方法,需要的朋友可以參考下
    2018-01-01
  • expect中為send語句上加變量的代碼

    expect中為send語句上加變量的代碼

    expect中為send語句上加變量,感興趣的朋友可以看看
    2013-02-02
  • 每天一個(gè)linux命令之locate 命令

    每天一個(gè)linux命令之locate 命令

    locate命令可以在搜尋數(shù)據(jù)庫時(shí)快速找到檔案,數(shù)據(jù)庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,這篇文章主要介紹了每天一個(gè)linux命令之locate 命令的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Linux啟動(dòng)與自啟動(dòng)的實(shí)例詳解

    Linux啟動(dòng)與自啟動(dòng)的實(shí)例詳解

    這篇文章主要介紹了Linux啟動(dòng)與自啟動(dòng)的實(shí)例詳解的相關(guān)資料,希望通過本文大家能理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • 使用Shell實(shí)現(xiàn)ini文件的讀寫

    使用Shell實(shí)現(xiàn)ini文件的讀寫

    這篇文章主要為大家詳細(xì)介紹了如何使用Shell實(shí)現(xiàn)ini文件的讀寫,文中的示例代碼簡潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2024-11-11
  • shell中常用的命令之diff和patch用法

    shell中常用的命令之diff和patch用法

    這篇文章主要介紹了shell中常用的命令:diff和patch,在這里diff是比較文件內(nèi)容,patch是打補(bǔ)丁的,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 輕松掌握Linux關(guān)機(jī)重啟命令

    輕松掌握Linux關(guān)機(jī)重啟命令

    在Linux系統(tǒng)下關(guān)機(jī)重啟命令有:shutdown、halt、rebbot、init命令,對于這些命令來說,他們的內(nèi)部工作過程是不相同的,下面小編給大家分享一篇文章有助于輕松掌握linux關(guān)機(jī)重啟命令
    2015-11-11

最新評論

万宁市| 温州市| 府谷县| 翁源县| 灵璧县| 界首市| 依兰县| 丰镇市| 九龙县| 政和县| 包头市| 资中县| 长岛县| 翁源县| 华阴市| 岳阳县| 民乐县| 昌平区| 汤原县| 高唐县| 凯里市| 武夷山市| 花莲县| 凭祥市| 乌什县| 新余市| 鲁山县| 应城市| 临漳县| 应用必备| 卓资县| 闸北区| 原平市| 吴桥县| 阿拉尔市| 汝阳县| 淄博市| 溧阳市| 任丘市| 祁连县| 临猗县|