UNIX:描述符和文件结构
生活随笔
收集整理的這篇文章主要介紹了
UNIX:描述符和文件结构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對于一個打開的文件,UNIX提供了三種數據結構來表示。
1)進程地址空間中的進程表項中的描述符表。其實就是一個數組,每一項就是一個k-v,k是fd,v是該描述符對應的打開文件在內核中的文件表項的地址。
2)文件表項。包括文件狀態標志、當前文件偏移量、v節點的地址。文件狀態標志位提供一些文件操作的選項、文件偏移量提供當前文件在內核中的讀寫初識位置、v節點地址是指向v節點的指針。
3)v節點和i節點。v節點包含了文件的類型和對于此文件進行操作的各種函數指針集合、i節點指針指向i節點。i節點包括文件的所有者、文件長度、指向文件實際數據塊在磁盤上的位置。
一般來說,一個進程中的文件描述符對應于一個內核中的文件表項。這是因為每個進程都有各自的對該文件的一個當前偏移量。一個給定的文件,在unix系統中對應于一個v節點表項。
多個文件表項可以對應于同一個v節點表項。但是當多個進程同時對這一個臨界區(文件)進行寫操作的時候會發生不同步帶來的混亂。因此應當保證一個進程對于當前文件的操作是原子的。例如O_APPEND標志就是表示當前進程對于該文件的追加是原子的。
多個文件表項在dup或者fork調用情況下,會使得多個進程表項共同指向同一份文件表項。dup用來復制現有的文件描述符。
總結
以上是生活随笔為你收集整理的UNIX:描述符和文件结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hiredis库的简单使用
- 下一篇: UNIX:缓冲区和重定向