linux 檔案描述符

2021-10-01 09:16:24 字數 922 閱讀 1875

linux中一切皆檔案,socket,磁碟,執行緒,顯示器,鍵盤等操作都是進行檔案的操作.

檔案型別

標記符目錄(directory)

d字元裝置(character)

c塊裝置(block)

b套接字(socket)

s管道(pipe)

p鏈結檔案(link)

llinux乙個程序啟動後,在記憶體中建立pcb控制塊,其中維護乙個檔案描述符表(file descriptor table).

filedescriptor

posix表示

標準io表示描述0

stdin_fileno

stdin

標準輸入(預設指向鍵盤)

1stdout_fileno

stdout

標準輸入(預設指向顯示器)

2stderr_fileno

stderr

標準錯誤(預設指向顯示器)3其他

其他其他

當我們使用open函式時,就是將除0,1,2之外的描述符(一般都是遞增)對應的指標,指向了要開啟的檔案.

在shell重定向中,預設標準輸出1(**中的echo或者print())和錯誤資訊2檔案描述符指向的是顯示器.

./test.sh 1>log 2>&1,我們將檔案描述符1(本來指向顯示器)指向了名稱為log的檔案,然後將檔案描述符2指向了檔案描述1,最終也輸入到了log檔案裡.

參考:

linux檔案描述符

本文介紹了檔案描述符,1 首先說什麼是檔案描述符,它有什麼作用?檔案描述符是乙個簡單的整數,用以標明每乙個被程序所開啟的檔案和socket。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案,並指定訪問該檔案的方式,呼叫成功後返回乙個檔案描述符。creat 開啟乙個檔案,如果該檔案不存在,則建立它...

linux檔案描述符

當某個程式開啟檔案時,作業系統返回相應的檔案描述符,程式為了處理該檔案必須引用此描述符。所謂的檔案描述符是乙個低階的正整數。最前面的三個檔案描述符 0,1,2 分別與標準輸入 stdin 標準輸出 stdout 和標準錯誤 stderr 對應。因此,函式 scanf 使用 stdin,而函式 pri...

Linux 檔案描述符

我們之前就知道在linux作業系統下 一切皆檔案 所以在這個條件下,所有研究的物件都變相的相當於研究檔案,那麼對檔案系統的研究也應該是必須的。我們的核心利用檔案描述符來訪問檔案,每個檔案描述符都是非負整數,開啟現存的檔案或者是新建檔案時,核心會返回乙個檔案描述符,讀寫檔案也需要使用檔案描述符來指定待...