a file descriptor, a small, nonnegative integer for use in
subsequent system calls (read(2), write(2), lseek(2), fcntl(2), etc.)
--from man 2.6.3
當開啟或者建立乙個新的檔案時,核心向程序返回乙個檔案描述符
用此檔案描述符就能讀寫檔案
linux一切皆檔案,拿到檔案描述符,就拿到了linux的鑰匙
標準輸出檔案描述符、標準輸入檔案描述符、標準錯誤檔案描述符
/* standard file descriptors. */
#define stdin_fileno 0 /* standard input. */
#define stdout_fileno 1 /* standard output. */
#define stderr_fileno 2 /* standard error output. */
---from
使用ulimit -n 進行檔案描述符設定當前程序
[para ~]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7271
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535 --> 檔案描述符限制 65535個
pipe size (512 bytes, -p) 8
posix message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
設定永久生效最大檔案描述符限制
修改 /etc/security/limits.conf
#end of file
root soft nofile 65535
root hard nofile 65535
para soft nofile 1024
para hard nofile 1024
* soft nofile 65535
* hard nofile 65535
[para ~]$ ulimit -n
1024
程序pcb中維護乙個檔案描述符表,該錶的索引值從0開始
每個程序都有自己的pcb塊,當然也有屬於自己的檔案描述符表
此圖由unix環境高階程式設計書籍而來,網上說 linux系統只使用i節點,而不使用v節點 ,知道方法再細研究此問題。
(1)程序拿到檔案描述符fd --> 通過檔案描述符表拿到對應檔案描述符指標
(2)通過指標找到檔案表的偏移量,再通過檔案偏移找到當前檔案指標的位置
(3)在通過i節點資訊去檔案系統進行具體操作
mysql 檔案描述符 檔案描述符
toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...
基礎IO與檔案描述符
一 引題 之前我們講過c標準庫提供的io函式fread,fwrite等,那麼它們到底是怎麼實現的呢?它們是真的靠自己寫出來的嗎?不一定?我們先來看看關於作業系統的概念圖 功能 開啟 和建立檔案 引數 pathname 待開啟 建立檔案的路徑名 flags 開啟模式 o rdonly唯讀模式 o wr...
檔案描述符
檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...