1. 程式人生 > >檔案描述符介紹(轉載)

檔案描述符介紹(轉載)

核心(kernel)利用檔案描述符(file descriptor)來訪問檔案。檔案描述符是非負整數。開啟現存檔案或新建檔案時,核心會返回一個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。
檔案描述符:在linux系統中開啟檔案就會獲得檔案描述符,它是個很小的正整數。每個程序在PCB(Process Control Block)中儲存著一份檔案描述符表,檔案描述符就是這個表的索引,每個表項都有一個指向已開啟檔案的指標。檔案指標:C語言中使用檔案指標做為I/O的控制代碼。檔案指標指向程序使用者區中的一個被稱為FILE結構的資料結構。FILE結構包括一個緩衝區和一個檔案描述符。而檔案描述符是檔案描述符表的一個索引,因此從某種意義上說檔案指標就是控制代碼的控制代碼(在Windows系統上,檔案描述符被稱作檔案控制代碼)。



檔案描述符的生成 open(), open64(), creat(), creat64() socket() socketpair() pipe() 與單一檔案描述符相關的操作 read(), write() recv(), send() recvmsg(), sendmsg() sendfile() lseek(), lseek64() fstat(), fstat64() fchmod()
fchown
() 與複數檔案描述符相關的操作 select(), pselect() poll() 與檔案描述符表相關的操作 close() dup() dup2() fcntl (F_DUPFD) fcntl (F_GETFD and F_SETFD) 改變程序狀態的操作 fchdir() mmap() 與檔案加鎖的操作 flock() fcntl (F_GETLK, F_SETLK and F_SETLKW)
lockf
() 與套接字相關的操作 connect() bind() listen() accept() getsockname() getpeername() getsockopt(), setsockopt() shutdown()