先上一張圖
文件描述符是內核為了高效管理已經被打開的文件所創建的索引,
----非負整數
----用於指代被打開的文件
----所有執行i/o操作的系統調用都是通過文件描述符完成的
進程通過文件描述符來訪問文件。 在程序剛啟動的時候默認有3個文件描述符:0(標准輸入),1(標准輸出),2(標准錯誤),系統默認提供了 0~2的文件描述符,之后的 當我們進行 open,create等操作的時候 自動添加進表
所以int creat(const char * ,mode_t)返回的文件int 就是你所進行操作的文件的唯一身份標示,
然后你只要拿着這個ID 然后告訴系統給我找xx, write(int fd,char *buf,int lenght) 通過fd得到准確文件 然后寫入
當我們新建creat,打開open 之后,得到的fd 是從3開始的 因為前面的三個被系統占了在OS X系統下測試 文件描述符表 自增,當釋放close之后,fd變成-1,如果再繼續新建 則填補之前的空缺。